gpt4 book ai didi

amazon-web-services - AWS CloudFormation 资源可以自行调用 !GetAtt 吗?

转载 作者:行者123 更新时间:2023-12-03 07:13:10 26 4
gpt4 key购买 nike

我正在尝试使用 CloudFormation 为 S3 存储桶设置库存配置。我想要获取一个子文件夹中的每日数据 list ,并将 list 写入同一存储桶中的不同子文件夹中。我将存储桶定义如下:

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 行似乎失败,导致出现错误消息,例如“错误:无法为堆栈创建变更集:,例如:Waiter ChangeSetCreateComplete 失败:Waiter 遇到了终端故障状态:对于表达式“状态”,我们匹配预期路径:“失败”状态:失败。原因:资源之间的循环依赖关系”。如果我使用存储桶的实际 ARN 代替 !GetAtt S3Bucket.Arn (它已存在于堆栈的早期版本中),则部署会成功,因此我知道存储桶可以将 Inventories 写入他们自己。

所以我想我的问题是,有没有办法让 Cfn 资源自行调用 !GetAtt ,这样我就不必在 InventoryConfigurations< 中对存储桶 ARN 进行硬编码?预先感谢!

最佳答案

Can AWS CloudFormation resources call !GetAtt on themselves?

不幸的是,不能,因为 !GetAtt 用于引用您所经历过的堆栈中的其他资源(其他资源如已创建的具体资源) .


但是,在您的情况下,考虑到您知道存储桶名称,您可以只是 construct the bucket ARN yourself直接。

格式:

arn:aws:s3:::bucket_name

例如如果名称是 test,您可以使用 arn:aws:s3:::test

Destination:
BucketAccountId: !Ref AWS::AccountId
BucketArn: 'arn:aws:s3:::test'

关于amazon-web-services - AWS CloudFormation 资源可以自行调用 !GetAtt 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69861947/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com