AWS Lambda デプロイアクションリファレンス - AWS CodePipeline

AWS Lambda デプロイアクションリファレンス

AWS Lambda デプロイアクションを使用して、サーバーレスデプロイ用のアプリケーションコードのデプロイを管理します。関数をデプロイし、次のようにトラフィックデプロイのデプロイ戦略を使用できます。

  • トラフィックシフト用の Canary デプロイとリニアデプロイ

  • All at Once デプロイ

注記

このアクションは V2 タイプのパイプラインでのみサポートされています。

アクションタイプ

  • カテゴリ: Deploy

  • 所有者: AWS

  • プロバイダー: Lambda

  • バージョン: 1

設定パラメータ

FunctionName

必須: はい

Lambda で作成した関数の名前 (MyLambdaFunction など)。

バージョンを作成しておく必要があります。

FunctionAlias

必須: いいえ

Lambda で作成した関数のエイリアス (live など)。この関数をデプロイします。エイリアスが存在し、アクション実行の開始時に、エイリアスにバージョンが 1 つある必要があります。(ロールバックターゲットバージョンになります)。

指定しない場合、アクションはソースアーティファクトを $LATEST にデプロイし、新しいバージョンを作成します。このユースケースでは、デプロイ戦略とターゲットバージョンオプションは使用できません。

PublishedTargetVersion

必須: いいえ

FunctionAlias にデプロイする Lambda 関数のバージョン。パイプラインまたはアクションレベルの変数を使用できます (#{variables.lambdaTargetVersion} など)。アクション実行の開始時に、バージョンを公開する必要があります。

入力アーティファクトが指定されていない場合は必須です。

DeployStrategy

必須: いいえ (デフォルトは AllAtOnce)

Lambda デプロイアクションが、Lambda 関数の元のバージョンから FunctionAlias の新しいバージョンにトラフィックを移行するために採用するレートを決定します。使用可能なデプロイ戦略は Canary またはリニアです。使用できる形式:

  • AllAtOnce -

    すべてのトラフィックは、更新された Lambda 関数に一度に移行します。

    指定されなかった場合、デフォルト値は AllAtOnce です。

  • Canary10Percent5Minutes - 最初の増分でトラフィックの 10 パーセントを移行します。残りの 90 パーセントは 5 分後にデプロイされます。

    パーセンテージと分の値の両方を変更できます。

  • Linear10PercentEvery1Minute - すべてのトラフィックが移行されるまで、毎分トラフィックの 10 パーセントを移行します。

    パーセンテージと分の値の両方を変更できます。

このフィールドについては、次の考慮事項に注意してください。

  • 最大合計待機時間は 2 日です。

  • FunctionAlias が指定されている場合にのみ使用できます。

アラーム

必須: いいえ

Lambda デプロイ用に設定されたアラーム名のカンマ区切りリスト。最大 10 のアラームを追加できます。モニタリングされたアラームが ALARM 状態になると、アクションは失敗します。

次の画像は、アクションの [編集] ページの例を示しています。

Lambda デプロイアクションを使用した新しいパイプラインの [アクションを編集する] ページ

入力アーティファクト

  • アーティファクトの数: 1

  • 説明: デプロイ中にスクリプトアクションをサポートするために提供されたファイル。

出力アーティファクト

  • アーティファクトの数: 0

  • 説明: 出力アーティファクトは、このアクションタイプには適用されません。

出力変数

このアクションを設定すると、パイプライン内のダウンストリームアクションのアクション設定によって参照できる変数が生成されます。このアクションは、アクションに名前空間がない場合でも、出力変数として表示できる変数を生成します。名前空間を使用してアクションを設定し、これらの変数をダウンストリームアクションの設定で使用できるようにします。

詳細については、「変数リファレンス」を参照してください。

FunctionVersion

デプロイされた新しい Lambda 関数のバージョン。

Lambda デプロイアクションのサービスロールポリシーのアクセス許可

CodePipeline がアクションを実行する際、CodePipeline サービスロールには、最小特権でのアクセスに適切にスコープダウンされた次のアクセス許可が必要です。

JSON
{ "Version":"2012-10-17", "Statement": [ { "Sid": "StatementForLambda", "Effect": "Allow", "Action": [ "lambda:GetAlias", "lambda:GetFunctionConfiguration", "lambda:GetProvisionedConcurrencyConfig", "lambda:PublishVersion", "lambda:UpdateAlias", "lambda:UpdateFunctionCode" ], "Resource": [ "arn:aws:lambda:us-east-1:111122223333:function:{{FunctionName}}", "arn:aws:lambda:us-east-1:111122223333:function:{{FunctionName}}:*" ] }, { "Sid": "StatementForCloudWatch", "Effect": "Allow", "Action": [ "cloudwatch:DescribeAlarms" ], "Resource": [ "arn:aws:cloudwatch:us-east-1:111122223333:alarm:{{AlarmNames}}" ] }, { "Sid": "StatementForLogs1", "Effect": "Allow", "Action": [ "logs:CreateLogGroup" ], "Resource": [ "arn:aws:logs:us-east-1:111122223333:log-group:/us-east-1/codepipeline/{{pipelineName}}", "arn:aws:logs:us-east-1:111122223333:log-group:/us-east-1/codepipeline/{{pipelineName}}:*" ] }, { "Sid": "StatementForLogs2", "Effect": "Allow", "Action": [ "logs:CreateLogStream", "logs:PutLogEvents" ], "Resource": [ "arn:aws:logs:us-east-1:111122223333:log-group:/us-east-1/codepipeline/{{pipelineName}}:log-stream:*" ] } ] }

アクションの宣言

YAML
name: Deploy actionTypeId: category: Deploy owner: AWS provider: Lambda version: '1' runOrder: 1 configuration: DeployStrategy: Canary10Percent5Minutes FunctionAlias: aliasV1 FunctionName: MyLambdaFunction outputArtifacts: [] inputArtifacts: - name: SourceArtifact region: us-east-1 namespace: DeployVariables
JSON
{ "name": "Deploy", "actionTypeId": { "category": "Deploy", "owner": "AWS", "provider": "Lambda", "version": "1" }, "runOrder": 1, "configuration": { "DeployStrategy": "Canary10Percent5Minutes", "FunctionAlias": "aliasV1", "FunctionName": "MyLambdaFunction" }, "outputArtifacts": [], "inputArtifacts": [ { "name": "SourceArtifact" } ], "region": "us-east-1", "namespace": "DeployVariables" },

このアクションを利用する際に役立つ関連リソースは以下の通りです。