Невозможно проверить следующие конфигурации назначения (от S3 до SQS) - PullRequest
1 голос
/ 21 февраля 2020

Я пытаюсь настроить рабочий процесс без сервера, который создает новую корзину S3, новую очередь SQS, а когда объект создается в корзине S3, помещает сообщения в очередь и раскручивает лямбду, как только их становится достаточно сообщения в очереди. В моем блоке ресурсов есть следующее:

resources:
  Resources:
    AnalyticsQueue:
      Type: "AWS::SQS::Queue"
      Properties:
        QueueName: "my-queue"
    S3EventQueuePolicy:
      Type: AWS::SQS::QueuePolicy
      DependsOn: AnalyticsQueue
      Properties:
        PolicyDocument:
          Id: SQSPolicy
          Statement:
            - Effect: Allow
              Action: sqs:SendMessage:*
              Resource: !Ref AnalyticsQueue
        Queues:
          - !GetAtt AnalyticsQueue.Arn
    AnalyticsBucket:
      Type: AWS::S3::Bucket
      Properties:
        BucketName: "my-bucket"
        NotificationConfiguration:
          QueueConfigurations:
            - Event: s3:ObjectCreated:*
              Queue: !GetAtt AnalyticsQueue.Arn

Когда я пытаюсь развернуть это, я получаю следующую ошибку:

Произошла ошибка: AnalyticsBucket - Невозможно проверить следующее Конфигурации назначения (Сервис: Amazon S3; Код состояния: 400; Код ошибки: InvalidArgument; Идентификатор запроса: E2A1F8BD6BEE6EF4;).

Некоторое поиск в Google, и я обнаружил, что проблема в блоке NotificationConfiguration в AnalyticsBucket. Если я удаляю весь этот субблок, он развертывается очень хорошо, но, очевидно, не будет генерировать сообщения в очереди при создании объектов.

В поисках способа решения этой проблемы.

1 Ответ

0 голосов
/ 23 февраля 2020

Большая конфигурация AWS позволяет вам подключать службы, и они не работают во время выполнения, если у них нет разрешения, однако конфигурация уведомлений S3 проверяет некоторые места назначения на доступ.

В этом случае вы не позволил S3 отправлять сообщения в SQS.

Это должно быть что-то вроде:

  PolicyDocument:
    Id: SQSPolicy
    Statement:
    - Sid: SQSEventPolicy
      Effect: Allow
      Principal: "*"
      Action: SQS:*
      Resource: "*"
      Condition:
        ArnLike:
          aws:SourceArn: arn:aws:s3:::*
...