3
0

AWSサービスを使って Lambda関数 の CI/CD を実現する方法を調査してみた

Last updated at Posted at 2022-02-12

はじめに

LambdaのCI/CDを実現したい!と思ったのですが、社内ルール的にAWS SAMを利用した開発はアクセスキーの発行が難しいため選択しにくく、一体どのような手段を取ればLambdaのCI/CDを実現できるか整理してみました。

**調査にかなり苦戦しています。**どうか皆さんのご意見をいただければ幸いです。

事前調査

名前から安易に「AWS CodeDeployがあればデプロイの自動化が出来る!」と思って調査していますが、
基本的にLambdaのデプロイはSAMを利用することを前提としている予感...
(※CodeDeploy Lambdaなどで検索してもSAMを前提とした記事がヒットしてしまう)

CodeDeployのBlackBelt(動画も見ました...)を確認していますが、CanaryやLinerのようなデプロイ戦略については触れられますが、直接的なLambdaのデプロイに関する言及が少なく、この辺自分には難しかったです...

調査方法

  • AWS 公式ドキュメント・チュートリアル
  • Qiita記事(優秀な先達の記事をたくさん参考にさせていただいております)
  • その他Web検索

調査結果

LambdaのDeploy方法の候補としては以下の通り?
3が出来そうにだけ見えてやる方法が見つからず、現状2が最適解のような気持ち悪さ...

  1. AWS SAMを用いてローカル(またはCloud9などのEC2インスタンス)からDeployコマンドを発行
    • ローカルからやりたい場合はアクセスキーの発行が必要(なはずであり、となるとベストプラクティス的には...)
    • git pushによるリポジトリの変更をフックとするのではなく、あくまで人のsam deployコマンドがフックとなる
  2. CodeBuildでbuildspec.yamlのcommands欄からaws cloudformation package,aws cloudformation deployコマンドを発行しzip化、その後CodeDeployではなくcFnでデプロイを実行する
  3. CodeDeployでLambda関数のデプロイをする
    • これが出来そうで調べているのに詳細な情報やハンズオン記事が見つからず気持ち悪い...

CodeDeployを用いてLambdaのデプロイができる(だろう)と判断した根拠

まとめ

  • CodeDeployの機能を見る限りLambdaのデプロイが出来そうであるが、デプロイ戦略についてのドキュメントばかりで具体的なデプロイ方法がよく分からない
  • 先達たちはcFnを使用することで自動デプロイを実現している
  • CodeDeployで設定項目もあるし名前的にDeployできそうなのに詳しい方法も実際にやっている人の記事も見つからなくて気持ち悪い!!

以上になります。悩みを書き連ねてすみません。。是非皆さんのコメントを頂ければと思います。

ちなみに、近いうちにCodeStarを使用してみようと思っています。
ここでテンプレ選んでよしなにやってもらうのが最適解になりそうな予感がしていますが、結局じゃあCodeDeployのLambdaに関する設定は何なのっていう気持ち悪さは残りそうです。
何かわかり次第更新していきます。(最終更新:2022/02/13)

3
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
0