Rails経由でAWS Lambda(ruby)を使いファイルをs3にアップロードする方法

タイトルが渋滞していますが、、やったことは下記のこと。

  1. Railsが非同期ジョブ走らせる
  2. 非同期ジョブはlambdaをinvokeする
  3. lambdaがcurlでファイルを持ってきて、s3にアップロードする
  4. その結果のアップロード先URLをRailsのDBに保存

AWS Lambdaを触ったのは初めてです。nodeではなくrubyで動かします。まずは、AWS上にLambda関数を作ります。今回は、コードは短いだろうと予想し、ローカルにインストールせずにAWSのWEB UIのエディタを使いました。

Role 追加

登場ロールは2つ、Rails側でlambdaをinvokeするロールとlambda関数を走らせるロール

Rails側でlambdaをinvokeするロール

*全部必要ではないかもしれませんが、面倒なので全て権限をあげました。

lambda関数を走らせるロール

Rails側のコード

AWS Ruby SDK version2 です。RequestResponseだと同期で処理します。返り値を拾うためにもここは同期で処理。invoke_copy自体を非同期で走らせるイメージです。

Lambda関数のコード

AWS Ruby SDK version3です。Lambdaの/tmpのみがwritableな場所で、maxで512MBです。
したがって、これ以上コピーできません。

[Linux] シンプルなプロセス監視にはimmortalが便利

プロセスがなにかの理由で死んだら、単純にリスタートさせたい。けど、systemdとかmonitとかの設定ファイルを書くのが面倒だなって思っていて調べていた。シェル(Bash)でLoopでかけそうだけど、

Ref: Stackoverflow

これも面倒だと思ってしまいました。スクリプトの前にone command置く感じでやりたいなって調べてみると、immortalというツールを発見!早速インストール。

使い方もシンプルで

付属のimmortalctlで、管理できる。

RailsでGoogle+シャットダウンに伴うGoogle Sign-in対応

[Action Required] Google+ APIs and OAuth requests are being shutdown on March 7, 2019というメールが来ていた。会社でGoogle Sign-Inを使っているので、影響があるかどうか調べて、変更を行った。

まずは、APIコンソールで確認。

Google+ APIをある程度の頻度で叩いてるので、変更が必要と認識。

Sign-Inに使用しているのGemは、omniauth-google-oauth2でgithub issueを探ると最新バージョンではGoogle+ dependencyはないとのこと。したがって、さっそくバージョンアップグレード。

Gemfile.lockを確認すると最新バージョンが入っていない。jwtのバージョンが古いことに起因しているようだ。

もうひとつサインインではないが、関係のありそうなgoogle-api-client(主にCalendar APIに利用)のバージョンを上げて、jwtが2.0以上になったことを確認。

もう一度、bundle update omniauth-google-oauth2で最新にするもうまくいってなさそうなので、Gemfileにバージョン指定。

bundle installして最新のもになってのを確認。

問題の切り分けに新しいプロジェクトをconsole APIに作り、tokenなどを作成し、テスト後、問題がなかったので本番環境にデプロイした。

数時間後、APIコンソールでgoogle+を叩いていないことを確認し、Google+シャットダウンに伴うGoogle Sign-inの対応完了。

所感:Googleに振り回れるがつらい。Hangoutも消えそうな気がするし。。

[AWS] EFSのマウント方法

EFSのルートを/etc/letsencryptをマウントする方法は、

1. パッケージのインストール (Ubuntuの場合)

2. 下記を/etc/fstabに記述する

3. セキュリティグループの作成

EFSサイドは2049 inboundをオープン。EC2側は2049のoutboundをオープン(outboundは基本全オープンだと思う)

4. 該当ディレクトリを作成し、fstabのReload

[Rails][JQuery]いつも忘れるDynamic select options

結構な頻度で書く依存型セレクトボックス。毎回自力で書いてるような気がするのでログしておく。

ruby/railsでEBS volumeを作る方法

AWS version3でebs volumeを作るのはドキュメント通り。

2018年 OKR的まとめ

今年の3月からGEP子会社の一つのGSA Onlineの社長業をしてきました。
GEPで開発チームを率いつつ、実際コードも書きつつ、(就業時間的にも)120%の力で走り続けてきたように思います。

お気に入りドラッカーの本を読み直し 成果をあげること に焦点を当てることを心に決めました。

僕が社長業をする前は、オンラインビジネスは動いているから大丈夫という感じでした。 そこにPDCAを回す余力はなく、どのタイミングで何をすべきかという具体的な指標、方向性なども欠けていたように思います。

時系列的に何をしてきたのかをふりかえってみると、

3, 4月 – オペレーションフローのレビュー/改善

実際にオペレーションのSlackチャネルに入り、何が起きているのかを観察し、タスクの見える化が必要と判断しJira導入。この時点でオペレーションある程度回るというという判断をしました。

成果: 24時間以内のメール返答率などの指標、タスクの見える化された。業務のドキュメントも少しずつできてきた

5, 6, 7月 – 入学フローの簡潔化

優秀なマーケーターが入社し、彼と二人三脚で入学フローをシンプルにした。

成果: 簡潔化により、30%のコスト削減に成功。同時にスケーラブルになり、多くの入学者をさばけるようになった。実際、これを行なっていなかったら、9月の前年比200%越えの入学者をさばけなかったと思う。

8, 9月 – 新しいコースを導入

Global step academyの目指すところはただのオンライン英会話サービスではない。これをはっきりさせるために英語で英語を学ぶを科目を増やすということにフォーカス。プロマネ的な役割で進捗させた。

成果: 三科目の導入に成功。マーケティング的にもユニークなポジション二ングが可能になった。

10, 11月 – ホームページの刷新

デザイナー、コピーライター、マーケティング、開発、全員で集中し、オーガニックトラフィックを増やす施策を施した。

成果: SEOはすぐに反映されないのでまだ具体的な数字を出せないが、lighthouse auditでは、SEOスコアが満点の100に。パフォーマンスも90越えのスコアになり、150%以上の改善できた

12月 〜 now – 新しいインターフェースの実装

成果: 1月末までに完成予定なので成果はまだなし。Rails+Reactでごりごり開発している。

もちろん、これはMajorなプロジェクトで、日々の開発・サポート業務も並行して行ってきました。忙しいかったわけです。

今年一年、色々経験し、たくさん学んだが、同時に課題もあります。

  1. リモートやアウトソースに頼ることになってきていて、一つのタスクに時間がかかる。海外勤務による時差、日本語ができるスタッフが少ない中、数回のフィードバックがおきるとあっという間に1週間が過ぎてしまう。バーンレートを考えるとオフィスにこれる人材をコストをかけてでも雇った方が結果的に全体的にはコストを抑えられそうに思う。
  2. 自分が開発に入ると経営改善が止まる。パラレルでタスクに向き合えない自分が不器用かもしれないが、プログラミングも時間がかかり、集中する必要があるので難しい。(開発のリードできる人を探しています!)。
  3. 勉強する時間がない。技術は進歩するし、それにキャッチアップしていくことでビジネスに適用できるアイディアを蓄えることができる。その時間があまりにも少なく培った知識の切り売りをしている感じになっている。もっと手を動かしExperimentalなコードを書く時間が欲しい。

自分の長所は、IT/開発側からビジネスを改善できる点と、Executionできるというところだと思っています。
実際、入学フローの改善も自分のアイディアてはなく、社員の提案を確実に実行させた結果です。

当たり前のことですが、体感するのは会社というのは一人で回るものではなくチームワークでかつ各々がきちんと成果を出すところにあります。 いっしょに働く会社のみんなには非常に感謝しています。(経理等のバックオフィス、ファイナンシングを考えることなく自分が開発とオンライン事業にフォーカスできる環境を作ってくれていたことも感謝しかないです)

彼らの成果の方向性を導くのがマネジメントの役割であり、リソースのないベンチャーにとってはその決断一つ一つがクリティカルで非常に大事です。 会社が良い方向に行くようにじっくり考察し、着実に実行していければと思います。

個人としては、経営者視点だけでなく経験を持ったエンジニアとしてユニークなキャリアを開いていきたいものです。

毎年ながら来年は勝負の年になりそうです

Scroll to top