

# Lambda の耐久性のある関数の設定
<a name="durable-configuration"></a>

耐久性のある実行の設定は、Lambda 関数が実行できる時間の長さと、サービスが実行履歴を保持する期間を制御します。関数の耐久性のある実行を有効にするには、これらの設定を構成します。

## 耐久性のある実行を有効にする
<a name="durable-config-settings"></a>

関数を作成するときに `DurableConfig` オブジェクトを設定して、実行タイムアウトと履歴の保持を設定します。耐久性のある実行を有効にできるのは、画数を作成するときだけです。既存の関数には有効にできません。

------
#### [ AWS CLI ]

```
aws lambda create-function \
  --function-name my-durable-function \
  --runtime nodejs24.x \
  --role arn:aws:iam::123456789012:role/my-durable-role \
  --handler index.handler \
  --zip-file fileb://function.zip \
  --durable-config '{"ExecutionTimeout": 3600, "RetentionPeriodInDays": 30}'
```

------
#### [ CloudFormation ]

```
Resources:
  MyDurableFunction:
    Type: AWS::Lambda::Function
    Properties:
      FunctionName: my-durable-function
      Runtime: nodejs24.x
      Handler: index.handler
      Code:
        ZipFile: |
          // Your durable function code
      DurableConfig:
        ExecutionTimeout: 3600
        RetentionPeriodInDays: 30
```

------

**設定パラメータ:**
+ `ExecutionTimeout` – Lambda が実行を停止するまでに耐久性のある実行を実行できる最大時間 (秒)。このタイムアウトは、個々の関数呼び出しではなく、耐久性のある実行全体に適用されます。有効な範囲: 1～31622400。
+ `RetentionPeriodInDays` – 耐久性のある実行が完了した後に実行履歴を保持する日数。この期間を過ぎると、実行履歴は `GetDurableExecutionHistory` API から使用できなくなります。有効な範囲: 1～90。

完全な API リファレンスについては、Lambda API リファレンスの「[DurableConfig](https://docs.aws.amazon.com/lambda/latest/api/API_DurableConfig.html)」を参照してください。

## 設定のベストプラクティス
<a name="durable-config-best-practices"></a>

本番稼働用に耐久性のある関数を設定する際、次のベストプラクティスに従ってください。
+ **適切な実行タイムアウトを設定する** – ワークフローの最大予想期間に基づいて `ExecutionTimeout` を設定します。コストおよびリソースの割り当てに影響するため、不要に長いタイムアウトを設定しないでください。
+ **ストレージコストと保持のバランスを取る** – デバッグおよび監査の要件に基づいて `RetentionPeriodInDays` を設定します。保持期間を長くすると、ストレージコストが増加します。
+ **状態サイズをモニタリングする** – 大規模な状態オブジェクトはストレージコストを増加させ、パフォーマンスに影響する可能性があります。状態を最小限に抑えて、大容量データには外部ストレージを使用します。
+ **適切なログを設定する** – 長時間実行するワークフローのトラブルシューティングの目的で詳細なログ記録を有効にしますが、ログの量とコストのインパクトに注意してください。

**本番稼働設定の例**

```
{
  "ExecutionTimeout": 86400,
  "RetentionPeriodInDays": 7
}
```

この例では、24 時間 (86,400 秒) の実行タイムアウトと 7 日間の保持期間を設定し、デバッグの可視性とほとんどの本番ワークロードのストレージコストのバランスを取ります。