Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Amazon s3 无法验证以下目标配置(S3到SQS)_Amazon S3_Amazon Cloudformation_Amazon Sqs_Serverless Framework - Fatal编程技术网

Amazon s3 无法验证以下目标配置(S3到SQS)

Amazon s3 无法验证以下目标配置(S3到SQS),amazon-s3,amazon-cloudformation,amazon-sqs,serverless-framework,Amazon S3,Amazon Cloudformation,Amazon Sqs,Serverless Framework,我正在尝试使用serverless设置一个工作流,它创建一个新的S3 bucket、一个新的SQS队列,当在S3 bucket中创建一个对象时,将一条消息放到队列中,并在队列中有足够的消息时旋转一个lambda。我的资源块中有以下内容: resources: Resources: AnalyticsQueue: Type: "AWS::SQS::Queue" Properties: QueueName: "my-queue" S3Eve

我正在尝试使用serverless设置一个工作流,它创建一个新的S3 bucket、一个新的SQS队列,当在S3 bucket中创建一个对象时,将一条消息放到队列中,并在队列中有足够的消息时旋转一个lambda。我的资源块中有以下内容:

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;请求ID:E2A1F8BD6BEE6EF4;)

通过谷歌搜索,我发现问题出在
AnalyticsBucket
上的
NotificationConfiguration
块中。如果我删除整个子块,它会很好地部署,但在创建对象时显然不会在队列上生成消息


正在寻找解决此问题的方法。

许多AWS配置允许您连接服务,如果它们没有权限,它们在运行时会失败,但是S3通知配置会检查某些目标的访问权限

在这种情况下,您不允许S3向SQS发送消息

应该是这样的:

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