View a markdown version of this page

AWS CLI を使用して Lambda の耐久性のある関数をデプロイして呼び出す - AWS Lambda

AWS CLI を使用して Lambda の耐久性のある関数をデプロイして呼び出す

AWS CLI を使用して、命令コマンドで Lambda の耐久性のある関数を作成してデプロイします。このアプローチにより、デプロイプロセスの各ステップを直接制御できます。

前提条件

  • AWS CLI をインストールして設定します。手順については、「AWS CLI のインストール」を参照してください。

  • 関数コードおよび耐久性のある実行 SDK でデプロイパッケージを作成します。

  • チェックポイントのアクセス許可で IAM 実行ロールを作成します。

実行ロールを作成する

基本的な Lambda 実行およびチェックポイントオペレーションのアクセス許可を持つ IAM ロールを作成します。

実行ロールを作成するには
  1. Lambda のロール引き受けを許可する信頼ポリシードキュメントを作成します。trust-policy.json として保存します。

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "lambda.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
  2. ロールを作成します。

    aws iam create-role \ --role-name durable-function-role \ --assume-role-policy-document file://trust-policy.json
  3. チェックポイントオペレーションと基本実行の耐久性のある実行ポリシーをアタッチします。

    aws iam attach-role-policy \ --role-name durable-function-role \ --policy-arn arn:aws:iam::aws:policy/service-role/AWSLambdaBasicDurableExecutionRolePolicy

AWSLambdaBasicDurableExecutionRolePolicy 管理ポリシーには、チェックポイントオペレーション (lambda:CheckpointDurableExecution および lambda:GetDurableExecutionState) と基本的な Lambda 実行に必要なアクセス許可が含まれています。

耐久性のある関数の作成します

--durable-config パラメータで耐久性のある関数を作成します。

耐久性のある関数を作成する方法
  1. 依存関係を持つ関数コードを .zip ファイルにパッケージ化します。

    zip -r function.zip index.mjs node_modules/
    注記

    Java ベースの耐久性の高い関数の場合、関数コードと依存関係を 1 つの .zip ファイルまたは Java Archive (JAR) ファイルにコンパイルする必要があります。詳細については、「.zip または JAR ファイルアーカイブで Java Lambda 関数をデプロイする」を参照してください。

  2. 耐久性のある実行を有効にして関数を作成します。

    aws lambda create-function \ --function-name myDurableFunction \ --runtime nodejs22.x \ --role arn:aws:iam::123456789012:role/durable-function-role \ --handler index.handler \ --zip-file fileb://function.zip \ --durable-config '{"ExecutionTimeout": 3600, "RetentionPeriodInDays": 7}'
注記

関数の作成時のみに、耐久性のある実行を有効にできます。既存の関数には有効にできません。

バージョンの発行

耐久性のある関数は $LATEST バージョン修飾子を使用して呼び出すことができますが、コードの確定的な実行を確保するためには、常に安定したバージョンを指す修飾 ARN を使用する必要があります。

aws lambda publish-version \ --function-name myDurableFunction \ --description "Initial version"

コマンドはバージョン ARN を返します。ARN の末尾にあるバージョン番号 (例えば、:1) を書き留めてください。

オプションとして、バージョンを指すエイリアスを作成します。

aws lambda create-alias \ --function-name myDurableFunction \ --name prod \ --function-version 1

耐久性のある関数を呼び出す

修飾 ARN (バージョンまたはエイリアス) を使用して、耐久性のある関数を呼び出します。

注記

べき等呼び出し: 失敗した呼び出しを再試行するときに、at-most-once の実行セマンティクスを保証する実行名を指定すると、実行が重複しないようにできます。詳細については、「べき等性」を参照してください。

同期呼び出し

15 分以内に完了する実行には、同期呼び出しを使用します。

aws lambda invoke \ --function-name myDurableFunction:1 \ --payload '{"orderId": "order-12345"}' \ --cli-binary-format raw-in-base64-out \ response.json

または、エイリアスを使用します。

aws lambda invoke \ --function-name myDurableFunction:prod \ --payload '{"orderId": "order-12345"}' \ --cli-binary-format raw-in-base64-out \ response.json
非同期呼び出し

長時間の実行には、非同期呼び出しを使用します。

aws lambda invoke \ --function-name myDurableFunction:prod \ --invocation-type Event \ --payload '{"orderId": "order-12345"}' \ --cli-binary-format raw-in-base64-out \ response.json

非同期呼び出しを使用すると、Lambda は即時に返します。関数はバックグラウンドで実行を続行します。

注記

コンソールでのプロトタイプ作成とテストに $LATEST を使用できます。本番稼働ワークロードの場合は、公開されたバージョンまたはエイリアスを使用します。

耐久性のある実行を管理する

次のコマンドを使用して、耐久性のある関数の実行を管理してモニタリングします。

実行を一覧表示する

耐久性のある関数におけるすべての実行を一覧表示します。

aws lambda list-durable-executions-by-function \ --function-name myDurableFunction
実行の詳細を取得する

特定の実行に関する詳細を取得します。

aws lambda get-durable-execution \ --durable-execution-arn arn:aws:lambda:us-east-1:123456789012:function:myDurableFunction:my-function-version/durable-execution/my-execution-name/my-execution-id
実行履歴を取得する

実行のチェックポイント履歴を表示します。

aws lambda get-durable-execution-history \ --durable-execution-arn arn:aws:lambda:us-east-1:123456789012:function:myDurableFunction:my-function-version/durable-execution/my-execution-name/my-execution-id
実行を停止する

実行中の耐久性のある実行を停止します。

aws lambda stop-durable-execution \ --durable-execution-arn arn:aws:lambda:us-east-1:123456789012:function:myDurableFunction:my-function-version/durable-execution/my-execution-name/my-execution-id

関数コードの更新

耐久性のある関数コードを更新し、新しいバージョンを発行します。

新しいバージョンを更新して公開する方法
  1. 関数コードを更新します。

    aws lambda update-function-code \ --function-name myDurableFunction \ --zip-file fileb://function.zip
  2. アップデートが完了するまで待機します。

    aws lambda wait function-updated \ --function-name myDurableFunction
  3. 新しいバージョンを発行します。

    aws lambda publish-version \ --function-name myDurableFunction \ --description "Updated order processing logic"
  4. 新しいバージョンをポイントするようにエイリアスを更新します。

    aws lambda update-alias \ --function-name myDurableFunction \ --name prod \ --function-version 2
重要

開始したバージョンを使用して処理中の実行が継続されます。新しい呼び出しには、更新されたエイリアスバージョンが使用されます。

関数ログの表示

CloudWatch ログで耐久性のある関数のログを確認します。

aws logs tail /aws/lambda/myDurableFunction --follow

ログをフィルタリングして特定の実行を確認します。

aws logs filter-log-events \ --log-group-name /aws/lambda/myDurableFunction \ --filter-pattern "exec-abc123"

リソースをクリーンアップする

耐久性のある関数および関連付けされたリソースを削除します。

# Delete the function aws lambda delete-function --function-name myDurableFunction # Delete the IAM role policies aws iam detach-role-policy \ --role-name durable-function-role \ --policy-arn arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole aws iam detach-role-policy \ --role-name durable-function-role \ --policy-arn arn:aws:iam::aws:policy/service-role/AWSLambdaBasicDurableExecutionRolePolicy # Delete the role aws iam delete-role --role-name durable-function-role

次のステップ

AWS CLI を使用して耐久性のある関数をデプロイした後

  • list-durable-executions-by-function および get-durable-execution コマンドを使用して実行をモニタリングする

  • AWS CloudTrail データイベントでチェックポイントオペレーションを表示する

  • 実行失敗または長時間実行の CloudWatch アラームを設定する

  • シェルスクリプトまたは CI/CD パイプラインを使用してデプロイを自動化する

Lambda の AWS CLI コマンドに関する詳細については、「AWS CLI コマンドリファレンス」を参照してください。