Lambda 関数のローリングデプロイ - AWS Lambda

Lambda 関数のローリングデプロイ

ローリングデプロイを使用して、Lambda 関数の新しいバージョンの導入に伴うリスクを制御します。ローリングデプロイでは、システムは関数の新しいバージョンを自動的にデプロイし、徐々に増加するトラフィックを新しいバージョンに送信します。トラフィックの量と増加率は、設定可能なパラメータです。

AWS CodeDeploy および AWS SAM を使用してローリングデプロイを設定できます。CodeDeploy は Amazon EC2 および AWS Lambda などの Amazon コンピューティングプラットフォームへのアプリケーションデプロイを自動化するサービスです。詳細については、「CodeDeploy とは何ですか?」を参照してください。CodeDeploy を使用して Lambda 関数をデプロイすることにより、簡単にデプロイのステータスをモニタリングし、問題を検出した場合にロールバックを開始できます。

AWS SAM は、サーバーレスアプリケーションを構築するためのオープンソースのフレームワークです。AWS SAM テンプレート(YAML フォーマット)を作成して、ローリングデプロイに必要なコンポーネントの設定を指定できます。AWS SAM はこのテンプレートを使用して、コンポーネントを作成し設定します。詳細については、「AWS サーバーレスアプリケーションモデルとは何ですか?」を参照してください。

ローリングデプロイでは、AWS SAM は次のタスクを実行します。

  • Lambda 関数を設定し、エイリアスを作成します。

    エイリアスのルーティング設定は、ローリングデプロイを実装する基本的な機能です。

  • CodeDeploy アプリケーションとデプロイグループを作成します。

    デプロイグループは、ローリングデプロイとロールバック(必要な場合)を管理します。

  • Lambda 関数の新しいバージョンを作成したとき、検出します。

  • 新しいバージョンのデプロイを開始するよう CodeDeploy をトリガーします。

AWS SAM Lambda テンプレートの例

次の例では、単純なローリングデプロイの AWS SAM テンプレートを示しています。

AWSTemplateFormatVersion : '2010-09-09' Transform: AWS::Serverless-2016-10-31 Description: A sample SAM template for deploying Lambda functions. Resources: # Details about the myDateTimeFunction Lambda function myDateTimeFunction: Type: AWS::Serverless::Function Properties: Handler: myDateTimeFunction.handler Runtime: nodejs12.x # Creates an alias named "live" for the function, and automatically publishes when you update the function. AutoPublishAlias: live DeploymentPreference: # Specifies the deployment configuration Type: Linear10PercentEvery2Minutes

このテンプレートは、次のプロパティを持つ myDateTimeFunction という名前の Lambda 関数を定義します。

AutoPublishAlias

AutoPublishAlias プロパティは、live という名前のエイリアスを作成します。さらに、関数の新しいコードを保存するときに、AWS SAM フレームワークが自動的に検出します。その後、フレームワークは新しい関数バージョンを公開して、新しいバージョンを指すように live エイリアスを更新します。

DeploymentPreference

DeploymentPreference プロパティにより、CodeDeploy アプリケーションが Lambda 関数の元のバージョンから新しいバージョンにトラフィックを移行するレートが決まります。この値 Linear10PercentEvery2Minutes により、トラフィックの追加 10% が 2 分ごとに新しいバージョンにシフトされます。

事前設定されたデプロイ設定の一覧については、「デプロイ設定」を参照してください。

Lambda 関数で CodeDeploy を使用する方法の詳細については、「CodeDeploy を使用して更新された Lambda 関数をデプロイする」を参照してください。