Amazon s3 无法验证以下目标配置(S3到SQS)
我正在尝试使用serverless设置一个工作流,它创建一个新的S3 bucket、一个新的SQS队列,当在S3 bucket中创建一个对象时,将一条消息放到队列中,并在队列中有足够的消息时旋转一个lambda。我的资源块中有以下内容: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
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:::*