Подписка на SNS не создается при отсутствии сервера - PullRequest
0 голосов
/ 04 марта 2019

У меня есть серверный проект, который должен развернуть очередь, подписать эту очередь на существующую тему и лямбду для обработки сообщений вне очереди.Вот мой yaml:

service: "ssul-${opt:branch}"

provider:
  name: aws
  runtime: nodejs8.10
  region: eu-west-1

functions:
  update:
    reservedConcurrency: 10
    handler: index.update
    events:
    - sqs:
        arn: {Fn::GetAtt: [Queue, Arn]}
        batchSize: 1

resources:
  Resources:
    Queue:
      Type: "AWS::SQS::Queue"
      Properties:
        MessageRetentionPeriod: 10800
        VisibilityTimeout: 900
        QueueName: "updates-${opt:branch}"
    Subscription:
      Type: "AWS::SNS::Subscription"
      Properties:
        TopicArn: "${env:TOPIC_ARN}"
        Protocol: sqs
        Endpoint:
          Fn::GetAtt: [Queue, Arn]

Я запускаю sls deploy --branch master возвращается нормально, и все развернуто, кроме подписки.Тема находится в другой учетной записи, но я смог создать очередь и подписаться на нее вручную через консоль.Что я делаю не так?

1 Ответ

0 голосов
/ 05 марта 2019

У меня были похожие проблемы (в моем случае я использовал SAM - модель приложения без сервера, поэтому мой yml другой, но проблема должна быть такой же).Иногда Консоль создает какой-то объект за сценой.В моем случае проблема заключалась в ресурсе политики темы:

  TopicPolicy:
    Type: "AWS::SNS::TopicPolicy"
    Properties:
      PolicyDocument:
        Version: "2012-10-17"
        Id: MyTopicPolicy
        Statement:
          - 
            Effect: "Allow"
            Principal: 
              Service: "events.amazonaws.com"
            Action: 
              - "sns:Publish"
            Resource: "*"
      Topics:
        - !Ref PipelineNotificationsTopic
...