我有一个非常简单的AWS CloudFormation模板,只是为了创建一个SQS资源,主要部分如下所示:
"Resources" : {
"Queue" : {
"Type" : "AWS::SQS::Queue",
"Properties" : {
"QueueName" : "QueueA"
}
}
}
我部署了这个(通过创建一个新的堆栈),好吧,正如official document建议的那样,默认保留期是4天,我检查过,它设置为4天,到目前为止一直很好。
然后我做了一个更改,将保留时间更改为5分钟,代码如下:
"Resources" : {
"Queue" : {
"Type" : "AWS::SQS::Queue",
"Properties" : {
"QueueName" : "QueueA",
"MessageRetentionPeriod": 300
}
}
}
这非常简单,我将其部署(堆栈更新),并且正如预期的那样,保留时间设置为5分钟。
然后我想将其重置为默认值,所以我删除了这一行:
"MessageRetentionPeriod": 300
我部署了它(堆栈再次更新),但它没有工作,我等了1个小时,因为医生说它可能需要15分钟才能生效,但它没有。< / p>
我的猜测是,如果我没有明确声明SQS属性的值,CloudFormation可以看到更改,但它在幕后调用的API不会生效,是不是?< / p>
答案 0 :(得分:1)
MessageRetentionPeriod 不是required parameter,因此您不必被迫设置它:
MessageRetentionPeriod
Amazon SQS保留邮件的秒数。您可以指定从60秒(1分钟)到1209600秒(14天)的整数值。默认值为345600秒(4天)。
必填:否
类型:整数
更新要求:不中断
但是,更新CF堆栈时,您将删除该值的显式设置,而不是将其重置为默认值。这是预期的行为。