You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何执行CloudFormation后我的SQS访问策略被覆盖而非新增?

解决SQS队列策略被CloudFormation覆盖的问题

AWS SQS队列仅能关联一个AWS::SQS::QueuePolicy资源。你当前的模板创建了两个独立的QueuePolicy资源并指向同一个队列,部署时后创建的DlqSqsQueuePolicyV2会直接覆盖之前的DlqSqsQueuePolicy,导致旧策略丢失。

正确的做法是把所有需要的策略语句合并到同一个QueuePolicy资源中,示例模板如下:

DlqSqsQueue:
  Type: AWS::SQS::Queue
  Properties:
    QueueName: !Sub name
    KmsMasterKeyId: alias/aws/sqs
    KmsDataKeyReusePeriodSeconds: 86400
  UpdateReplacePolicy: Delete
  DeletionPolicy: Delete

DlqSqsQueuePolicy:
  Type: AWS::SQS::QueuePolicy
  Properties:
    PolicyDocument:
      Statement:
        # 原v1策略语句
        - Action: sqs:SendMessage
          Condition:
            ArnEquals:
              aws:SourceArn: !GetAtt rulenamev1.Arn
          Effect: Allow
          Principal:
            Service: events.amazonaws.com
          Resource: !GetAtt DlqSqsQueue.Arn
          Sid: v1
        # 新增v2策略语句
        - Action: sqs:SendMessage
          Condition:
            ArnEquals:
              aws:SourceArn: !GetAtt rulenamev2.Arn
          Effect: Allow
          Principal:
            Service: events.amazonaws.com
          Resource: !GetAtt DlqSqsQueue.Arn
          Sid: v2
      Version: '2012-10-17'
    Queues:
      - !Ref DlqSqsQueue

关键说明:

  • 所有权限规则都放在Statement数组下,每个规则用唯一的Sid区分
  • 确保每个语句的Resource都指向目标队列的ARN
  • 保留原有Condition和Principal的配置逻辑,保证权限控制的正确性

内容的提问来源于stack exchange,提问作者Jatin Mehrotra

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 20:10:36