如何为AWS Step Function执行设置TTL以限定存储时长?
解决Step Function执行记录的TTL配置问题
核心方案:配置执行历史保留期
AWS Step Functions支持为状态机直接设置执行历史保留期,到期后执行记录会自动删除,这是解决敏感数据长期存储合规问题的直接方案。该配置独立于日志级别设置,专门控制执行过程中传递的数据的存储时长。
使用CDK实现配置
你可以在创建StateMachine时,通过executionHistoryRetentionPeriod属性指定保留时长,修改后的CDK代码如下:
import * as sfn from 'aws-cdk-lib/aws-stepfunctions'; import * as logs from 'aws-cdk-lib/aws-logs'; import * as cdk from 'aws-cdk-lib'; // 假设已定义好definition和logGroup实例 this.stateMachine = new sfn.StateMachine(this, "stateMachine", { definition: definition, logs: { destination: logGroup, level: sfn.LogLevel.OFF }, // 设置执行记录保留30天,可根据合规要求调整为1-90天范围内的值 executionHistoryRetentionPeriod: cdk.Duration.days(30), // 仅STANDARD类型状态机支持自定义保留期配置 stateMachineType: sfn.StateMachineType.STANDARD });
关键注意事项
- 状态机类型限制:只有STANDARD类型的Step Functions支持1-90天的自定义保留期;EXPRESS类型默认仅保留极短时间的执行记录(通常几小时),适合对数据存储时效要求极高的场景。
- 执行历史与日志的区别:关闭日志级别只是停止向CloudWatch输出日志,但Step Functions自身的执行历史是独立存储的,必须通过
executionHistoryRetentionPeriod控制其生命周期。 - 合规适配:设置保留期后,系统会自动清理到期的执行数据,无需手动操作,完全符合GDPR关于数据存储期限的合规要求。
内容的提问来源于stack exchange,提问作者Luke
相关产品推荐
相关产品推荐

