С помощью CloudFormation я пытаюсь создать очередь и подписаться на существующую тему
$ cat ops/queue-and-subscription.yaml
AWSTemplateFormatVersion: 2010-09-09
Description: >-
Minimal template
Resources:
Queue:
Type: 'AWS::SQS::Queue'
Subscription:
Type: 'AWS::SNS::Subscription'
Properties:
Endpoint:
Fn::GetAtt:
- "Queue"
- "Arn"
Protocol: "sqs"
RawMessageDelivery: true
TopicArn: "<existing Topic ARN>"
Outputs:
QueueARN:
Description: "ARN of the queue set up temporarily for testing"
Value:
Fn::GetAtt:
- "Queue"
- "Arn"
QueueURL:
Description: "URL of the queue. This is required for receiving messages"
Value: !Ref Queue
$ aws cloudformation create-stack --stack-name my-test-stack --template-body file://ops/queue-and-subscription.yaml
{
"StackId": "<stackId>"
}
[...wait...]
$ aws cloudformation describe-stacks --query 'Stacks[?StackName==`my-test-stack`] | [0].StackStatus'
"CREATE_COMPLETE"
$ aws cloudformation describe-stacks --query 'Stacks[?StackName==`my-test-stack`] | [0].Outputs[?OutputKey==`QueueURL`] | [0].OutputValue'
"<queueUrl>"
$ aws sqs receive-message --queue-url <queueUrl>
[null]
Я ожидал, что подтверждающее сообщение будет помещено прямо в очередь (которое мне нужно будет прочитать и передать confirm-subscription
call docs. Однако такое сообщение никогда не передается в очередь.
Как я могу попросить AWS (через SDK, а не через пользовательский интерфейс) отправить подтверждающее сообщение, чтобы я мог подтвердить подписку?
РЕДАКТИРОВАТЬ: Я должен отметить, что я просто пробовал аналогичный подход, но создав тему SNS в шаблоне (и ссылаясь на нее с помощью !Ref Topic
) - такое же поведение, без подтверждающего сообщения.
EDIT2: я подозреваю, что это связано с тем, что я не предоставил Политика очереди SQS. Попробую сейчас.