2

J'ai une très simple AWS CloudFormation modèle qui vient de créer une ressource SQS, la partie principale ressemble à ceci:Remise à zéro SQS MessageRetentionPeriod propriété n'a pas fonctionné

"Resources" : { 
     "Queue" : { 
     "Type" : "AWS::SQS::Queue", 
     "Properties" : { 
      "QueueName" : "QueueA" 
     } 
     } 
    } 

I met ce (en créant un nouvelle pile), eh bien, comme le suggère le official document, la période de rétention par défaut est de 4 jours, j'ai vérifié, il a été fixé à 4 jours, jusqu'ici tout va bien.

Alors je fait un changement pour changer la rétention à 5 minutes, le code comme suit:

"Resources" : { 
     "Queue" : { 
     "Type" : "AWS::SQS::Queue", 
     "Properties" : { 
      "QueueName" : "QueueA", 
      "MessageRetentionPeriod": 300 
     } 
     } 
    } 

Ce qui est assez simple, je reçois ce déploiement (pile mise à jour), et comme prévu, le maintien a été fixé à 5 minutes.

Ensuite, je veux le remettre à défaut, donc j'ai supprimé cette ligne:

  "MessageRetentionPeriod": 300 

Je déploiement à l'échelle (pile mise à jour à nouveau), mais il ne fonctionne pas, j'ai attendu pendant 1 heure comme le doc dit que cela peut prendre jusqu'à 15 minutes pour prendre effet, mais ce n'est pas le cas.

Ma supposition est que si je ne déclare pas explicitement la valeur d'une propriété de SQS, CloudFormation peut voir ce changement, mais l'API qu'il appelle dans les coulisses ne prendra pas effet, n'est-ce pas?

+0

Vous avez mis à jour une file plutôt que de créer une nouvelle file d'attente? Dans ce cas, il n'a probablement tout simplement pas changé cette valeur. Il utiliserait la valeur par défaut si vous utilisiez le modèle pour créer une nouvelle file d'attente. –

+0

@JohnRotenstein Je l'ai créé, puis toutes les opérations ont été mises à jour. Désolé de vous dérouter, je vais mettre à jour la description. – kevinjom

+0

Etes-vous sûr d'avoir mis à jour la pile à partir du bouton ** Mettre à jour la pile ** sur la console AWS CloudFormation? Parce que la modification dans les propriétés de ressource est lue par CloudFormation, il doit également mettre à jour le MessageRetentionPeriod par défaut également. –

Répondre

1

MessageRetentionPeriod est pas un required parameter si vous n'êtes pas obligé de le régler:

MessageRetentionPeriod

Le nombre de secondes Amazon SQS conserve un message. Vous pouvez spécifier une valeur entière de 60 secondes (1 minute) à 1209600 secondes (14 jours). La valeur par défaut est 345600 secondes (4 jours).

Requis: Non

Type: Entier

Mise à jour nécessite: Aucune interruption

Toutefois, lorsque la pile de CF vous est mis à jour supprimez le paramètre explicite de cette valeur, et non la réinitialisation à la valeur par défaut. C'est un comportement attendu.