📚
GitHub に push したら AWS Lambda が更新されるようにする
前提
- GitHubにpushしたらECRにDocker imageがpushされる状態
- CodeBuildで設定してある
- 上記Docker imageを利用してLambdaが動く状態
問題
- GitHubにpushしてからCodeBuildが完了するのを待ってLambdaを手動更新するのが面倒
対応
- CodeBuildのbuildspecにlambda更新コマンドを追加する
- post_buildに下記を追加した
-
aws lambda update-function-code --function-name $LAMBDA_FUNCTION_NAME --image-uri $AWS_ACCOUNT_ID.dkr.ecr.$AWS_DEFAULT_REGION.amazonaws.com/$IMAGE_REPO_NAME:$IMAGE_TAG
- 環境変数定義は利用状況によって異なると思います
-
- post_buildに下記を追加した
- 上記を追加したらpush起因でLambdaの更新を実行できるようになったが、下記エラーが出た
An error occurred (AccessDeniedException) when calling the UpdateFunctionCode operation
- 権限不足
- UpdateFunctionCode 権限を含むポリシーを作成し、CodeBuildのロールにアタッチして解決した
余談
- 調査中、CloudFormation使わないとできないのか?とかCodePipelineでないと無理?とか紆余曲折した
-
https://dev.classmethod.jp/articles/deploying-to-aws-lambda-container-using-github-actions/ を発見して、buildspecでやれることが分かった
- この記事はGitHub Actionsでの実現だが、最後にlambdaをコマンドで更新している点を借用した
- buildspecの有用性に気づけて良かった
Discussion