如何通过CloudFormation配置AWS::SNS::Topic的ArchivePolicy?
解决SNS主题ArchivePolicy的CloudFormation配置问题
问题原因
你遇到的错误是因为ArchivePolicy并非AWS::SNS::Topic资源的直接Properties字段,它属于SNS主题的自定义属性,需要通过TopicAttributes来配置,且值必须是JSON序列化后的字符串,不能直接使用YAML对象格式。
正确配置模板
原生CloudFormation/SAM模板写法
AWSTemplateFormatVersion : '2010-09-09' Transform: AWS::Serverless-2016-10-31 Description: SNS topic for my application Resources: MyTopic: Type: AWS::SNS::Topic Properties: TopicName: MyTopic TopicAttributes: ArchivePolicy: '{"MessageRetentionPeriod": 90}'
关键注意事项
- 属性位置:必须将
ArchivePolicy放在TopicAttributes字典下,这是SNS主题自定义属性的正确配置路径 - 格式要求:
ArchivePolicy的值必须是JSON字符串,不能直接写YAML结构(比如不能写成ArchivePolicy: {MessageRetentionPeriod: 90},需要用引号包裹成JSON字符串) - 取值范围:
MessageRetentionPeriod的有效值是1到365天,你的90天配置符合要求
验证方式
部署前可以用SAM CLI的sam validate命令检查模板格式,确保JSON字符串的语法正确(比如引号配对、逗号使用等)。
内容的提问来源于stack exchange,提问作者T. Pubz
相关产品推荐
相关产品推荐

