Как предложить AWS SNS отправить подтверждающее сообщение для подписки, созданной Cloudformation? - PullRequest
0 голосов
/ 29 сентября 2018

Через 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 вызов документы * 1006. * Однако такое сообщение никогда не передается в очередь.

Как я могу предложить AWS (через SDK, а не пользовательский интерфейс) отправить подтверждающее сообщениечтобы я мог подтвердить подписку?


РЕДАКТИРОВАТЬ: я должен отметить, что я только что попробовал аналогичный подход, но создание темы SNS в шаблоне (и ссылки на него с !Ref Topic) - то же самоеповедение, нет подтверждающего сообщения.


EDIT2: я подозреваю, что это потому, что я не предоставил SQS Queue Policy . Пытаюсь сейчас.

1 Ответ

0 голосов
/ 29 сентября 2018

Как только я добавил QueuePolicy , позволяющий теме записывать в очередь, сообщения проходили, как и ожидалось (без подтверждающего сообщения).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...