AWS CodeBuildを使ってRuby lambda functionにデプロイする
方法論的なものが少なかったので。
Rubyだけでなく、他の言語でも応用が効くはず。
CodePipelineと組み合わせると強力。
TLDR
# 抜粋
phases:
install:
runtime-versions:
ruby: 2.6
commands:
- rbenv install 2.5.5 && rbenv global 2.5.5
# bundler install --path vendor/bundle等
post_build:
commands:
- zip data.zip *.rb -r vendor && aws lambda update-function-code --function-name 'FUNCTION_NAME' --zip-file 'fileb://data.zip'
解説
bundle install
した状態のファイル群をまとめてlambdaに投げたい。
Rubyバージョンの乖離
2019/06/26現在、lambdaのRubyは通常2.5しか選択できない。
CodeBuildはRuby2.6しか選択できない。
bundle install --path vendor/bundle
したときに困ってしまう。
CodeBuildのログを見る感じrbenvが入っているので使いたいRubyバージョン入れてしまおうというアプローチ。
lambdaへの反映
aws
コマンドが使えるので使う。zipを作って普通にアップロード。CodeBuildの権限ロールにlambdaのアクセス権限つけるのを忘れずに。(AWSLambdaFullAccessをつければ動くことは確認)
別のアプローチ
カスタムコンテナ使えば解決ではあるが・・・。
補足
実際の buildspec.yml
のコマンド欄には hoge.sh
みたいにシェルスクリプトを指定したほうが見通しや管理が楽。
zipするところは必要なファイル群を入れておくこと。
Author And Source
この問題について(AWS CodeBuildを使ってRuby lambda functionにデプロイする), 我々は、より多くの情報をここで見つけました https://qiita.com/ir-yk/items/caba25746b7ef1df3035著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .