我正在嘗試創建一個 s3 存盤桶,每次將物件放入 s3 存盤桶時,該存盤桶都會向 SNS 主題發送通知。我的 S3 存盤桶被呼叫foo-bucket,我的 SNS 主題被呼叫foo-topic。我知道如何在 aws 控制臺中進行設定,但是在嘗試通過 cloudformation 執行此操作時遇到了問題。
這是我目前擁有的代碼
Resources:
SNSTopic:
Type: AWS::SNS::Topic
Properties:
TopicName: foo-topic
SNSTopicPolicy:
Type: AWS::SNS::TopicPolicy
Properties:
PolicyDocument:
Id: MyTopicPolicy
Version: '2012-10-17'
Statement:
- Sid: Statement-id
Effect: Allow
Principal:
Service: s3.amazonaws.com
Action: sns:Publish
Resource:
Ref: SNSTopic
Condition:
ArnLike:
aws:SourceArn:
Fn::Join:
- ''
- - 'arn:aws:s3:::'
- Ref: S3Bucket
Topics:
- Ref: SNSTopic
S3Bucket:
Type: AWS::S3::Bucket
Properties:
BucketName: foo-bucket
AccessControl: BucketOwnerFullControl
NotificationConfiguration:
TopicConfigurations:
- Topic:
Ref: SNSTopic
Event: s3:ObjectCreated:Put
由于以下錯誤,我嘗試部署上述和 cfn 回滾
無法驗證以下目標配置(服務:Amazon S3;狀態代碼:400;錯誤代碼:InvalidArgument;請求 ID:fooooo;S3 擴展請求 ID:foooid;代理:null)
uj5u.com熱心網友回復:
我有一個創建存盤桶、sns 主題和通知配置的示例 cloudformation。如前所述,您需要確保正確的依賴順序。
通知配置不檢查資源是否存在,因此我們需要使用該DependsOn屬性來執行此操作
在創建 SNS 主題策略時,還要注意潛在的回圈參考。我將存盤桶名稱定義為字串,而不是參考。它允許在存盤桶的通知配置之前使用其策略創建 SNS。
IngestionBucketDev:
Type: AWS::S3::Bucket
DependsOn:
- IngestionTopicDev
- IngestionTopicPolicy
Properties:
BucketName: "ingestion-codebucket-7832df8b-dev"
NotificationConfiguration:
TopicConfigurations:
- Topic: !Ref IngestionTopicDev
Event: 's3:ObjectCreated:*'
Filter:
S3Key:
Rules:
- Name: suffix
Value: ".json"
PublicAccessBlockConfiguration:
RestrictPublicBuckets: true
BlockPublicPolicy: true
IngestionTopicDev:
Type: AWS::SNS::Topic
Properties:
TopicName: "elearn-ingest-topic"
DisplayName: "elearn-ingest-topic"
IngestionTopicPolicy:
Type: AWS::SNS::TopicPolicy
Properties:
Topics:
- !Ref IngestionTopicDev
PolicyDocument:
Version: 2012-10-17
Statement:
- Action:
- 'sns:Publish'
Effect: Allow
Resource: !Ref IngestionTopicDev
Principal:
Service: "s3.amazonaws.com"
Condition:
ArnEquals:
"aws:SourceArn": "arn:aws:s3:::ingestion-codebucket-7832df8a-dev"
uj5u.com熱心網友回復:
是的,您的問題是依賴項;)
我有同樣的問題,如果你不指定依賴順序,比如先創建 SNS,然后在 Bucket 部分獲取使用 REF 創建的 ID,你會遇到有關目標配置的問題。
請按照此鏈接解決您的問題,您將看到DependsOn:
https://aws.amazon.com/premiumsupport/knowledge-center/unable-validate-destination-s3/?nc1=h_ls
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/386953.html
標籤:亚马逊网络服务 亚马逊-s3 亚马逊云形成 亚马逊-sns
上一篇:即使在DigitaloceanSpacesUI中添加CORS設定后,物件中也缺少access-control-allow-origin標頭
下一篇:MongoDB查找連接陣列
