我有一个非常简单的AWS CloudFormation模板,只是为了创造一个SQS资源,主要部分是这样的:重置SQS MessageRetentionPeriod财产没有工作
"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小时为DOC表示可能需要15分钟才能生效,但事实并非如此。
我的猜测是,如果我没有明确声明SQS属性的值,CloudFormation可以看到这个改变,但是它在幕后调用的API不会生效,是不是?
您正在更新队列而不是创建新的队列?在这种情况下,它可能根本没有改变这个价值。如果您使用模板创建新队列,它将使用默认值。 –
@JohnRotenstein我创建了它,然后所有的操作都在更新。抱歉让你困惑,我会更新说明。 – kevinjom
您确定您已经从AWS CloudFormation控制台上的**更新堆栈**按钮更新了堆栈吗?因为资源属性的更改由CloudFormation读取,因此它必须将MessageRetentionPeriod更新为默认值。 –