AWS::SQS::Queue - 模板无法更新队列的RedriveAllowPolicy

0

【以下的问题经过翻译处理】 我正在使用CloudFormation的YAML模板来创建两个队列,其中一个是死信队列(DLQ)。在DLQ队列中,我尝试添加RedriveAllowPolicy,使用以下JSON行之一,但它失败,并显示下面提到的错误消息。我还在此嵌入了完整的模板(YAML),以便进行复现。

另外,我们使用的是us-west-2(俄勒冈)区域。

接下来是JSON示例,以及可能的错误消息

RedriveAllowPolicy: !Sub '{"redrivePermission":"byQueue","sourceQueueArns":"arn:aws:sqs:${AWS::Region}:${AWS::AccountId}:${EnvironmentType}-${MlResultsQueueName}"}'

或者

RedriveAllowPolicy: !Join ['',['{"redrivePermission":"byQueue","sourceQueueArns":"', !GetAtt NevaDscvrMlResultsQueue.Arn, '"}']]

CloudFormation堆栈在队列更新时失败的错误消息

Resource handler returned message: "Invalid value for the parameter RedriveAllowPolicy. Reason: Amazon SQS can't create the redrive allow policy, as it?s in an unsupported format. (Service: Sqs, Status Code: 400, Request ID: edb2977c-9656-5c9b-a7bf-cdde4dd26492, Extended Request ID: null)" (RequestToken: 76823ad0-286b-ff35-ba3e-de300bac4c88, HandlerErrorCode: GeneralServiceException)

完整的模版:

AWSTemplateFormatVersion: '2010-09-09'
Parameters:
EnvironmentType:
Type: String
Default: dev
Description: 'The name of the release environment.'
MlResultsQueueName:
Description: MlResultsQueue name
Type: String
Default: 'nevadscvr-ml-results'
MlResultsQueueDLQName:
Description: MlResultsQueueDLQ name
Type: String
Default: 'nevadscvr-ml-results-DLQ'
Resources:
NevaDscvrMlResultsQueue:
Type: AWS::SQS::Queue
Properties:
  QueueName: !Sub '${EnvironmentType}-${MlResultsQueueName}'
  VisibilityTimeout: 60
  MessageRetentionPeriod: 345600
  DelaySeconds: 0
  MaximumMessageSize: 262144
  
  ReceiveMessageWaitTimeSeconds: 20
  RedrivePolicy:
    deadLetterTargetArn: !Sub 'arn:aws:sqs:${AWS::Region}:${AWS::AccountId}:${EnvironmentType}-${MlResultsQueueDLQName}'
    maxReceiveCount: 3
NevaDscvrMlResultsQueueDLQ:
Type: AWS::SQS::Queue
Properties:
  QueueName: !Sub '${EnvironmentType}-${MlResultsQueueDLQName}'
  VisibilityTimeout: 30
  
  MessageRetentionPeriod: 345600
  
  DelaySeconds: 0
  MaximumMessageSize: 262144
  
  ReceiveMessageWaitTimeSeconds: 0
  RedriveAllowPolicy: !Sub '{"redrivePermission":"byQueue","sourceQueueArns":"arn:aws:sqs:${AWS::Region}:${AWS::AccountId}:${EnvironmentType}-${MlResultsQueueName}"}'
1 Antwort
0

【以下的回答经过翻译处理】 我通过使用提供的模板成功复现了这个问题。为了解决这个问题,我使用了以下方式传递了RedriveAllowPolicy,这种方式有效:

RedriveAllowPolicy: !Sub >-
   {"redrivePermission":"byQueue","sourceQueueArns":["arn:aws:sqs:${AWS::Region}:${AWS::AccountId}:${EnvironmentType}-${MlResultsQueueName}"]}

将sourceQueueArns传递为一个列表修复了这个问题。

profile picture
EXPERTE
beantwortet vor 5 Monaten

Du bist nicht angemeldet. Anmelden um eine Antwort zu veröffentlichen.

Eine gute Antwort beantwortet die Frage klar, gibt konstruktives Feedback und fördert die berufliche Weiterentwicklung des Fragenstellers.

Richtlinien für die Beantwortung von Fragen