我正在嘗試使用 CloudFormation 為 S3 存盤桶設定庫存配置。我想獲取一個子檔案夾中的每日資料庫存,并將庫存寫入同一存盤桶中的不同子檔案夾。我已將存盤桶定義如下:
S3Bucket:
Type: AWS::S3::Bucket
Properties:
# ...other properties...
InventoryConfigurations:
- Id: runs
Enabled: true
Destination:
BucketAccountId: !Ref AWS::AccountId
BucketArn: !GetAtt S3Bucket.Arn
Format: CSV
Prefix: inventory/runs/
IncludedObjectVersions: Current
OptionalFields: [ETag, Size, BucketKeyStatus]
Prefix: runs/
ScheduleFrequency: Daily
不幸的是,該!GetAtt S3Bucket.Arn行似乎失敗了,導致出現類似“錯誤:無法為堆疊創建變更集:,例如:Water ChangeSetCreateComplete 失敗:Water 遇到終端故障狀態:對于運算式“Status”我們匹配預期路徑:“失敗“狀態:失敗。原因:資源之間的回圈依賴”。如果我使用存盤桶的實際 ARN 代替!GetAtt S3Bucket.Arn(它已經存在于先前版本的堆疊中),那么部署會成功,所以我知道存盤桶可以將庫存寫入自己。
所以我想我的問題是,有沒有辦法讓 Cfn 資源!GetAtt自行呼叫,這樣我就不必對存盤桶 ARN 進行硬編碼InventoryConfigurations?提前致謝!
uj5u.com熱心網友回復:
AWS CloudFormation 資源可以自行呼叫 !GetAtt 嗎?
不幸的是,沒有,因為正如您所經歷的那樣,!GetAtt用于參考堆疊中的其他資源。
但是,在您的情況下,考慮到您知道存盤桶名稱,您可以直接自己構建存盤桶 ARN。
格式:
arn:aws:s3::: bucket_name
例如,如果名稱是test,則可以使用arn:aws:s3:::test
Destination:
BucketAccountId: !Ref AWS::AccountId
BucketArn: 'arn:aws:s3:::test'
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/350299.html
