这是 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/