【发布时间】:2020-05-16 01:55:20
【问题描述】:
我正在尝试获取 S3 事件通知以并行触发多个 Lambda 函数。
需要通过 SNS,因为您不能定义具有相同 S3 Prefix 的多个 S3 LambdaConfigurations - Cloudformation 抱怨“重叠”:-(
所以我在这里遵循这个模式 -
https://aws.amazon.com/blogs/compute/fanout-s3-event-notifications-to-multiple-endpoints/
但是我在部署时一直与Unable to validate the following destination configurations 发生冲突。这似乎与丢失的SNS::TopicPolicy 相关,这里有详细记录 -
https://aws.amazon.com/premiumsupport/knowledge-center/unable-validate-destination-s3/
但是我定义了一个TopicPolicy(见下文),并且使Bucket 创建依赖于它。我在这里做错了什么? TIA。
---
AWSTemplateFormatVersion: 2010-09-09
Parameters:
AppName:
Type: String
Resources:
Topic:
Properties:
TopicName: !Sub "${AppName}-topic"
Type: AWS::SNS::Topic
TopicPolicy:
Properties:
PolicyDocument:
Id: !Sub "${AppName}-topic-policy"
Statement:
- Action: "sns:Publish"
Effect: Allow
Principal:
Service: 's3.amazonaws.com'
Resource: Ref! Topic
Sid: !Sub "${AppName}-topic-policy-statement"
Version: '2012-10-17'
Topics:
- !Ref Topic
Type: AWS::SNS::TopicPolicy
Bucket:
DependsOn:
- TopicPolicy
Properties:
BucketName: !Sub "${AppName}-bucket"
NotificationConfiguration:
TopicConfigurations:
- Event: "s3:ObjectCreated:*"
Topic: !Ref Topic
Type: AWS::S3::Bucket
【问题讨论】:
-
这听起来可能很傻,但是您可以尝试重新排序您的模板,使其与链接中的示例一样,即第一个主题,然后是主题策略,然后是存储桶?我知道依赖项应该可以工作,但过去曾有几次将它们按所需的创建顺序排列会有所帮助。
-
不错的尝试,但仍然遇到同样的错误!大声笑
标签: amazon-s3 amazon-cloudformation amazon-sns