[新機能]CodeDeployを利用したLambdaのバージョン間の段階デプロイ #reinvent

2017.11.30

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

コンニチハ、千葉です。

CodeDeployのデプロイ対象としてLambdaが追加されました。バージョン間でトラフィックを徐々に流すことが可能になりました。また自動的にロールバックすることも可能になります。

ということで、さっそくやってみました。

やってみた

Lambdaを選択できるようになってます! ※Lambdaには事前にバージョン1と2を作成しておきました

デプロイ設定作成を選択すると細かな段階移行のパラメータも調整できます

トリガーの設定として、デプロイのスタートや完了時のイベント時にSNS通知することができます。

ロールバックの設定も可能です。 ※選択するロールにはCodeDeployに加えLambdaのフルアクセスも与えました

作成したデプロイグループを指定して、「新しいリビジョンをデプロイ」を選択します。

※Lambda側で事前に複数バージョンを作成しておきましょう

appspec.ymlにLambdaの現在のバージョンと変更後のバージョンを指定します。参考

version: 0.0
Resources:
  - MyFunction:
      Type: AWS::Lambda::Function
      Properties:
        Name: "chiba"
        CurrentVersion: "1"
        TargetVersion: "2"
        Alias: "PRD"

デプロイできました!Hooksも指定できるので、デプロイする前に関数を実行して成功するかみたいな簡単なテストも実施できます。

さいごに

CodeDeploy + Lambdaではバージョン変更時の段階的移行をサポートしています。Lambdaへのコードデプロイ自体はSAMやCloudFormationを別途利用する必要がありそうです。今後はパイプラインとしての連携アーキテクチャについて調べてみます。

参考

https://aws.amazon.com/jp/about-aws/whats-new/2017/11/aws-lambda-supports-traffic-shifting-and-phased-deployments-with-aws-codedeploy/ - http://docs.aws.amazon.com/codedeploy/latest/userguide/reference-appspec-file-structure-hooks.html#appspec-hooks-lambda - http://docs.aws.amazon.com/codedeploy/latest/userguide/application-revisions-appspec-file.html