

# 配置 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 小时（86400 秒）的执行超时和 7 天的保留期，能够在调试可视性与生产工作负载的存储成本之间实现均衡，适用于多数业务场景。