【问题标题】:Is there a "requester pays" attribute for S3 Buckets being created with CloudFormation Templates?使用 CloudFormation 模板创建的 S3 存储桶是否有“请求者付费”属性?
【发布时间】:2019-09-04 13:12:17
【问题描述】:

我正在尝试为 S3 存储桶创建一个 CloudFormation 模板 (CFT),该存储桶需要“PublicRead”并且还启用了“Requester Pays”。

我查看了 S3 Bucket CFT 的文档:AWS::S3::Bucket - AWS CloudFormation

我还查看了“Requester Pays”的文档,但它没有提到任何关于 CFT 的内容。它仅引用通过控制台和 REST API 启用它: Requester Pays Buckets - Amazon Simple Storage Service

目前,我们正试图将我们所有的基础设施都纳入基础设施即代码中,但这在某种程度上是一个很大的障碍。我听说其他人在 CFT 不支持 AWS 服务的某些功能时遇到了麻烦,但通常这些功能是针对不受欢迎/较新的服务的。我认为 CFT 将支持 S3 为存储桶提供的所有选项。

【问题讨论】:

    标签: amazon-web-services amazon-s3 amazon-cloudformation


    【解决方案1】:

    你是对的。 CloudFormation AWS::S3::Bucket 资源不支持请求者付款。

    启用它,您需要进行API调用,例如put_bucket_request_payment():

    设置bucket的请求支付配置。默认情况下,存储桶所有者为从存储桶下载的内容付费。此配置参数使存储桶拥有者(仅)能够指定请求下载的人将为下载付费。

    response = client.put_bucket_request_payment(
        Bucket='string',
        RequestPaymentConfiguration={
            'Payer': 'Requester'|'BucketOwner'
        }
    )
    

    这可以通过将 AWS Lambda 自定义资源添加到 CloudFormation 模板,或使用作为堆栈一部分创建的 Amazon EC2 实例的 AWS CLI 来完成。

    【讨论】:

    • 谢谢!我知道 CloudFormation 存在这个问题,但我还没有遇到这个问题。我喜欢使用 Lambda 函数自动将请求者付款附加到存储桶的建议。
    猜你喜欢
    • 2017-08-30
    • 1970-01-01
    • 1970-01-01
    • 2021-05-06
    • 2023-04-11
    • 2016-08-23
    • 2016-12-09
    • 2019-06-29
    • 1970-01-01
    相关资源
    最近更新 更多