【问题标题】:Unable to configure SQS queue notification in S3无法在 S3 中配置 SQS 队列通知
【发布时间】:2019-07-14 11:01:38
【问题描述】:

我创建了一个 SQS 队列并在权限选项卡下添加了策略,只允许我的帐户用户配置配置通知

政策文件

{
  "Version": "2012-10-17",
  "Id": "arn:aws:sqs:us-east-1:111111111111:sqsqueue/SQSDefaultPolicy",
  "Statement": [
    {
      "Sid": "Sid111111111111",
      "Effect": "Allow",
      "Principal": {
        "AWS": "111111111111"
      },
      "Action": [
        "sqs:SendMessage",
        "sqs:ReceiveMessage"
      ],
      "Resource": "arn:aws:sqs:us-east-1:111111111111:queue"
    }
  ]

导航到 S3 并尝试为上述队列配置事件通知,它正在抛出错误

无法验证以下目标配置。目标队列的权限不允许 S3 发布 来自此存储桶的通知。 (arn:aws:sqs:us-east-1:111111111111:queue)*

我做错了吗?有人可以帮我吗

【问题讨论】:

标签: amazon-web-services amazon-s3 aws-sdk amazon-sqs


【解决方案1】:

我能够通过添加“服务”来解决此问题:“s3.amazonaws.com” 在 Principal 标签中。

这里是政策文件

    {
  "Version": "2012-10-17",
  "Id": "arn:aws:sqs:us-east-1:111111111111:sqsqueue/SQSDefaultPolicy",
  "Statement": [
    {
      "Sid": "Sid111111111111",
      "Effect": "Allow",
      "Principal": {
        "Service": "s3.amazonaws.com"
      },
      "Action": [
        "sqs:SendMessage",
        "sqs:ReceiveMessage"
      ],
      "Resource": "arn:aws:sqs:us-east-1:111111111111:queue"
    }
  ]

这在https://forums.aws.amazon.com/thread.jspa?threadID=173251中有解释

【讨论】:

  • OMFG 我在这上面花了几个小时;为主体添加Service(而不是带有包罗万象的AWS)解决了问题
【解决方案2】:

这个模板文件创建了一个bucket、SQS Queue和一个连接两者的策略:

AWSTemplateFormatVersion: 2010-09-09
Parameters:
  IncomingBucketName:
    Type: 'String'
    Description: 'Incoming Bucket Name'
    Default: 'some-bucket-name-here'
Resources:
  IncomingFileQueue:
    Type: 'AWS::SQS::Queue'
    Properties: {}
  SQSQueuePolicy:
    Type: 'AWS::SQS::QueuePolicy'
    Properties:
      PolicyDocument:
        Id: 'MyQueuePolicy'
        Version: '2012-10-17'
        Statement:
          - Sid: 'Statement-id'
            Effect: 'Allow'
            Principal:
              AWS: "*"
            Action: 'sqs:SendMessage'
            Resource:
              Fn::GetAtt: [ IncomingFileQueue, Arn ]
      Queues:
        - Ref: IncomingFileQueue
  IncomingFileBucket:
    Type: 'AWS::S3::Bucket'
    DependsOn:
      - SQSQueuePolicy
      - IncomingFileQueue
    Properties:
      AccessControl: BucketOwnerFullControl
      BucketName:
        Ref: IncomingBucketName
      NotificationConfiguration:
        QueueConfigurations:
          - Event:
              s3:ObjectCreated:Put
            Queue:
              Fn::GetAtt: [ IncomingFileQueue, Arn ]

我遇到了同样的问题,但使用此页面来确定如何连接三个资源以成功部署堆栈: https://aws.amazon.com/premiumsupport/knowledge-center/unable-validate-destination-s3/

我仍在处理政策条件,因为上述链接中推荐的表格不适用于 SQS。在这种情况下,上述模板并不安全,不应在生产环境中使用,因为它允许任何人将消息添加到队列中。

一旦我弄清楚这一点,我会更新这个答案......

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-03-16
    • 2015-09-21
    • 2022-01-14
    • 1970-01-01
    • 2016-11-19
    • 2021-12-02
    • 1970-01-01
    • 2020-06-06
    相关资源
    最近更新 更多