AWS Lambda CI/CD俺的ベストプラクティス - くりにっき のCloud Functions版です
最近Cloud Functions使うことがあってCI面からフレームワークなどを検討しました。AWS Lambdaほどガッツリ使ってないので比較対象が少ないのはご愛嬌
Terraform
- Cloud FunctionsにアップロードするソースコードをTerraformでzip圧縮する必要があって厳しい
- アップロード用のバケットも自分で作る必要がある
- 別に作ってもいいんだけど、Serverless Frameworkだとzip圧縮やバケット作成含めて勝手にやってくれるので敢えてこっちを選ばなくてもいいと思う
Deployment Manager
https://cloud.google.com/deployment-manager?hl=ja
- 公式なので信頼できる
- zip圧縮も面倒見てくれるかと思ったらpythonの中でzip圧縮してyamlを動的生成しててかなり黒魔術
- https://github.com/GoogleCloudPlatform/deploymentmanager-samples/blob/master/examples/v2/cloud_functions/python/cloud_function.py
- Functionを複数作るとして、これを複数リポジトリにコピペしてまわりたくない...(1つでも割とウッとなる)
Serverless Framework
- 今回比較した中では一番まとも
- デプロイ関係の面倒くさい処理(GCSのバケットを作ってソースをzipに固めてアップロードとか)はよしなにやってくれる
- プラグインが充実してるのも嬉しい
- 不満点
- デプロイのdry runや
serverless.yml
のvaridateができないところ- master自動デプロイにしてるとmasterにマージするまで動作確認できない
- Serverless Framework + Cloud Functions + Goで書いてるんだけど情報が英語含めてほとんどないので直感で書いてる
- デプロイのdry runや
- 凝ったことをやりたくなると(例:Cloud Functionsで使うPubsub topicをServerless側で作る)
serverless.yml
にDeployment Managerのymlを書く必要があるのだが、それはAWSで分かってたことなので諦めてた