2017-07-03 80 views
2

我有一個非常簡單的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不會生效,是不是?

+0

您正在更新隊列而不是創建新的隊列?在這種情況下,它可能根本沒有改變這個價值。如果您使用模板創建新隊列,它將使用默認值。 –

+0

@JohnRotenstein我創建了它,然後所有的操作都在更新。抱歉讓你困惑,我會更新說明。 – kevinjom

+0

您確定您已經從AWS CloudFormation控制檯上的**更新堆棧**按鈕更新了堆棧嗎?因爲資源屬性的更改由CloudFormation讀取,因此它必須將MessageRetentionPeriod更新爲默認值。 –

回答

1

MessageRetentionPeriod不是required parameter這樣你就不會被強制設置:

MessageRetentionPeriod

,亞馬遜SQS保留了消息的秒數。您可以指定從60秒(1分鐘)到1209600秒(14天)的整數值。默認值是345600秒(4天)。

要求:無

類型:整數

更新要求:無中斷

然而,當CF棧更新要刪除該值的顯式設置,不將其重置爲默認值。這是一個預期的行爲。