amazon-web-services - 通过 SQS sam yaml 订阅 SNS

标签 amazon-web-services yaml aws-cloudformation sam

这是 sam yaml 片段:

  SnsTopic:
    Type: AWS::SNS::Topic
    Properties:
      DisplayName: !Sub ${Env}-sns-topic
      TopicName: !Sub ${Env}-sns-topic

  Queue:
    Type: AWS::SQS::Queue
    Properties:
      QueueName: !Sub ${Env}-queue
      VisibilityTimeout: 300
      MessageRetentionPeriod: 1209600
      ReceiveMessageWaitTimeSeconds: 20
      RedrivePolicy:
        deadLetterTargetArn: !GetAtt Dlq.Arn
        maxReceiveCount: 5

  Dlq:
    Type: AWS::SQS::Queue
    Properties:
      QueueName: !Sub ${Env}-dlq
      VisibilityTimeout: 300
      MessageRetentionPeriod: 1209600
      ReceiveMessageWaitTimeSeconds: 0

  TestSubscription:
    Type: AWS::SNS::Subscription
    DependsOn: 
      - SnsTopic
      - Queue
      - Dlq
    Properties:
      Protocol: sqs
      TopicArn: !Ref SnsTopic
      Endpoint: !GetAtt 
        - Queue
        - Arn
      RawMessageDelivery: true

我正在尝试创建一个订阅带有死信队列 (DLQ) 的 SQS 的 SNS。部署后,我可以看到 SNS 和 SQS 已成功创建,但 SQS 订阅 SNS 似乎不起作用。当我检查 SQS 的订阅时,我可以看到在同一堆栈中创建的 SNS 已列出,但我必须手动添加订阅才能使其正常工作。我想知道什么可能导致此问题,或者我的示例中是否缺少某些内容。

最佳答案

您必须设置AWS::SQS::QueuePolicy允许 SNS 将消息发送到队列。检查AWS docs有关如何操作的示例。

关于amazon-web-services - 通过 SQS sam yaml 订阅 SNS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/75392890/

相关文章:

amazon-web-services - 资源 arn :aws:cloudformation:us-east-1:aws:transform 的权限问题

reactjs - 使用 AWS 放大通过网站登录到 chrome 扩展

amazon-web-services - CloudFormation 嵌套模板能否在没有预签名 URL 的情况下访问私有(private) S3 对象?

amazon-web-services - 通过 Cloudformation/lambda 发送 SNS 消息以更新安全组

amazon-web-services - AWS 日志代理设置

amazon-web-services - 如何在 AWS CDK 的输入区域部署 Elasticsearch 集群?

amazon-web-services - 如何将变量子到 yaml 中的字符串中?

java - 将 Yaml 中的列表映射到 Spring Boot 中的对象列表

azure - 如何在 Azure DevOps YAML 的条件中使用数组

amazon-web-services - 如何在AWS codepipeline中自动部署api网关