重置SQS MessageRetentionPeriod属性不起作用

时间:2017-07-03 07:57:27

标签: amazon-web-services amazon-sqs amazon-cloudformation

我有一个非常简单的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>

1 个答案:

答案 0 :(得分:1)

MessageRetentionPeriod 不是required parameter,因此您不必被迫设置它:

  

MessageRetentionPeriod

     
    

Amazon SQS保留邮件的秒数。您可以指定从60秒(1分钟)到1209600秒(14天)的整数值。默认值为345600秒(4天)。

         

必填:否

         

类型:整数

         

更新要求:不中断

  

但是,更新CF堆栈时,您将删除该值的显式设置,而不是将其重置为默认值。这是预期的行为。