

# Lambda の耐久関数のテスト
<a name="durable-testing"></a>

Durable Execution テスト SDK を使用して、ローカルとクラウドの両方で実行を実施および検査します。テストの作成、アサーション、クラウドランナー、SAM CLI 統合、完全な例については、「AWS Durable Execution SDK デベロッパーガイド」の「[テスト](https://docs.aws.amazon.com/durable-execution/testing/)」を参照してください。

## クラウドテストの IAM アクセス許可
<a name="durable-cloud-testing"></a>

クラウドランナーまたは `sam remote invoke` を使用してデプロイされた耐久性のある関数をテストする場合、呼び出し元のプリンシパルには、関数を呼び出して実行履歴を読み取るためのアクセス許可が必要です。ユーザーに、次のアクセス許可をアタッチします。

```
{
    "Version": "2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "lambda:InvokeFunction",
                "lambda:GetDurableExecution",
                "lambda:GetDurableExecutionHistory"
            ],
            "Resource": [
                "arn:aws:lambda:region:account-id:function:function-name",
                "arn:aws:lambda:region:account-id:function:function-name:*"
            ]
        }
    ]
}
```

{{region}}、{{account-id}}、{{function-name}} をお客様の値に置き換えます。

## デバッグの失敗
<a name="durable-testing-debugging"></a>

テストが失敗したら、実行結果を検査して、何が失敗したかを把握します。実行ステータスをチェックして、関数が成功、失敗、またはタイムアウトしたかどうかを確認します。エラーメッセージを読み、障害の原因を把握します。

個々のオペレーション結果を調べて、動作が予想と異なる場所を見つけます。ステップの結果をチェックして、生成された値を確認します。オペレーションの順序を確認し、オペレーションが予想される順序で実行されていることを確認します。オペレーションをカウントして、適切な数のステップ、待機、コールバックが作成されていることを確認します。

一般的な問題には、リプレイ時に異なる結果を生成する非決定的なコード、リプレイ中に破損するグローバル変数を介した共有状態、条件付きロジックエラーによる操作の欠落などがあります。標準的なデバッガーとログを使用して、関数コードをステップスルーし、実行フローを追跡します。

クラウドテストの場合は、CloudWatch Logs の実行履歴を調べて、詳細なオペレーションログを確認します。トレースを使用して、サービス全体の実行フローを追跡し、ボトルネックを特定します。