標準以外のgemを使ったrubyスクリプトをlambdaで動かすサンプル。
gemなどを全部パッケージ(zip)しないといけないので、
$ bundle install --path vendor/bundle
でローカルにインストールするようにしておく。
bundler自体ないとダメじゃね?と思ったが大丈夫だった。ローカルで開発する時に、bundle経由で実行しないといけないので、
$ bundle exec ruby app.rb
といった具合に実行する。
あと実行は関数単位なので、関数にまとめておき、(event:, context:)
を引数に設定しておく。
def foobar(event:, context:)
p event
p context
end
デプロイする前にlambdaで関数を作成しておく。関数名とファイル名などは一致していなくても良い。
イベントハンドラの設定はfilename.functuon_name
にしておく必要がある。リポジトリのサンプルだとapp.foobar
といった感じ。
IAMでIAMとLambdaなどにアクセスできるユーザーを作っておく。aws configure時にリージョンも聞かれるのでap-northeast-1
を入力。output formatはデフォのままで良いと思う。
デフォの認証情報については設定ファイルと認証情報ファイル - AWS Command Line Interfaceを参照。
$ brew install awscli
$ aws configure
つくった物をzipで固める。
$ zip -r function.zip app.rb vendor
aws cliでデプロイする
$ aws lambda update-function-code --function-name [関数名] --zip-file fileb://function.zip