aws cloudformation 模板 sns sqs
aws cloudformation template sns sqs
我已经在 Cloudformation 堆栈中定义了一个 SNS 主题、一个 SQS 队列和一个 SNS 订阅资源。这三个都在相同的堆栈、相同的区域和相同的 AWS 账户中。
Resources:
SqsQueue:
Type: AWS::SQS::Queue
Properties:
QueueName: 'some-queue'
SnsTopic:
Type: AWS::SNS::Topic
Properties:
TopicName: 'some-topic'
SnsSubscription:
Type: AWS::SNS::Subscription
Properties:
Endpoint: !GetAtt [SqsQueue, Arn]
Protocol: sqs
TopicArn: !Ref SnsTopic
当我 运行 堆栈时,所有三个资源都已成功创建,但是当我从 SNS 发布消息时,SQS 队列从未接收到它。
我一直在关注这个 link (https://aws.amazon.com/premiumsupport/knowledge-center/sqs-sns-subscribe-cloudformation/),据我所知,我已经做了我需要做的一切。我还缺少什么?
谢谢!
附加信息
如果我删除了 Cloudformation 通过控制台创建的订阅,然后通过控制台创建了一个新的订阅,消息可以正常发布。所以一定是订阅有问题。
我使用 AWS CLI 将 Cloudformation 模板创建的订阅属性与控制台创建的订阅属性进行了比较。它们完全一样。
您需要添加策略以允许 SNS 主题发布到您的队列。像这样:
SnsToQueuePolicy:
Type: AWS::SQS::QueuePolicy
Properties:
Queues:
- !Ref SqsQueue
PolicyDocument:
Version: '2012-10-17'
Statement:
- Sid: allow-sns-messages
Effect: Allow
Principal: '*'
Resource: !GetAtt SqsQueue.Arn
Action: SQS:SendMessage,
Condition:
ArnEquals:
aws:SourceArn: !Ref SnsTopic
我已经在 Cloudformation 堆栈中定义了一个 SNS 主题、一个 SQS 队列和一个 SNS 订阅资源。这三个都在相同的堆栈、相同的区域和相同的 AWS 账户中。
Resources:
SqsQueue:
Type: AWS::SQS::Queue
Properties:
QueueName: 'some-queue'
SnsTopic:
Type: AWS::SNS::Topic
Properties:
TopicName: 'some-topic'
SnsSubscription:
Type: AWS::SNS::Subscription
Properties:
Endpoint: !GetAtt [SqsQueue, Arn]
Protocol: sqs
TopicArn: !Ref SnsTopic
当我 运行 堆栈时,所有三个资源都已成功创建,但是当我从 SNS 发布消息时,SQS 队列从未接收到它。
我一直在关注这个 link (https://aws.amazon.com/premiumsupport/knowledge-center/sqs-sns-subscribe-cloudformation/),据我所知,我已经做了我需要做的一切。我还缺少什么?
谢谢!
附加信息
如果我删除了 Cloudformation 通过控制台创建的订阅,然后通过控制台创建了一个新的订阅,消息可以正常发布。所以一定是订阅有问题。
我使用 AWS CLI 将 Cloudformation 模板创建的订阅属性与控制台创建的订阅属性进行了比较。它们完全一样。
您需要添加策略以允许 SNS 主题发布到您的队列。像这样:
SnsToQueuePolicy:
Type: AWS::SQS::QueuePolicy
Properties:
Queues:
- !Ref SqsQueue
PolicyDocument:
Version: '2012-10-17'
Statement:
- Sid: allow-sns-messages
Effect: Allow
Principal: '*'
Resource: !GetAtt SqsQueue.Arn
Action: SQS:SendMessage,
Condition:
ArnEquals:
aws:SourceArn: !Ref SnsTopic