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}"}'
profile picture
专家
已提问 3 个月前8 查看次数
1 回答
0

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

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

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

profile picture
专家
已回答 3 个月前

您未登录。 登录 发布回答。

一个好的回答可以清楚地解答问题和提供建设性反馈,并能促进提问者的职业发展。

回答问题的准则