amazon-s3 - 无法验证以下目标配置(S3 到 SQS)
问题描述
我正在尝试使用无服务器设置一个工作流,该工作流创建一个新的 S3 存储桶、一个新的 SQS 队列,当在 S3 存储桶中创建一个对象时,将一条消息放入队列并在有足够消息时启动一个 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;)。
一些谷歌搜索,我发现问题出NotificationConfiguration
在AnalyticsBucket
. 如果我删除整个子块,它部署得很好,但是当对象被创建时显然不会在队列上生成消息。
正在寻找解决此问题的方法。
解决方案
许多 AWS 配置允许您连接服务,如果它们没有权限,它们会在运行时失败,但是 S3 通知配置确实会检查一些目标以进行访问。
在这种情况下,您不允许 S3 向 SQS 发送消息。
它应该是这样的:
PolicyDocument:
Id: SQSPolicy
Statement:
- Sid: SQSEventPolicy
Effect: Allow
Principal: "*"
Action: SQS:*
Resource: "*"
Condition:
ArnLike:
aws:SourceArn: arn:aws:s3:::*
推荐阅读
- python - 无法打开本地 .txt 文件以在 NLTK 中读取
- r - 如何按月份和用户名从长格式数据中获取表格?
- sqlite - Sqlite 插入或替换与主键
- jfreechart - 自定义 Jfreechart 类别项标签
- sql - 为什么我的 CASE WHEN 语句在为另一列数据工作时不为一列数据划分?
- python - OpenCV2 错误:(-215:断言失败)'cv::resize',同时训练模型
- asp.net-core - ASP.NET 核心从 applicationsettings.json 读取数组
- excel - 日期不会出现在列表框的文本框中
- c++ - 为什么我们不更新路径压缩后不相交集的排名?
- google-play-console - 如何处理违反 Google Play 重复内容政策的行为?