在存储桶上配置申请方付款
您可以将 Amazon S3 存储桶配置为申请方付款存储桶,以便请求者而不是存储桶拥有者支付请求和数据下载费用。
本节提供了演示如何使用控制台和 REST API 在 Amazon S3 存储桶上配置申请方付款的示例。
为 S3 存储桶启用申请方付款
登录到 Amazon Web Services Management Console,然后通过以下网址打开 Amazon S3 控制台:https://console.aws.amazon.com/s3/
。 -
在 Buckets (存储桶) 列表中,选择要为其启用申请方付款的存储桶的名称。
-
选择属性。
-
在 Requester pays (申请方付款) 下,选择 Edit (编辑)。
-
选择 Enable (启用),然后选择 Save changes (保存更改)。
Amazon S3 为存储桶启用申请方付款,并显示 Bucket overview (存储桶概述)。在 Requester pays (申请方付款) 下,您将看到 Enabled (已启用)。
只有存储桶拥有者才能将存储桶的 RequestPaymentConfiguration.payer 配置值设置为 BucketOwner (默认值) 或 Requester。设置 requestPayment 资源是可选的。默认情况下,存储桶不是申请方付款存储桶。
要将申请方付款存储桶恢复为常规存储桶,请使用值 BucketOwner。通常情况下,在将数据上传到 Amazon S3 存储桶时,您将使用 BucketOwner,然后将值设置为 Requester,才能在该存储桶中发布对象。
设置 requestPayment 的步骤
-
使用
PUT请求在指定存储桶上将Payer值设置为Requester。PUT ?requestPayment HTTP/1.1 Host:[BucketName].s3.amazonaws.com Content-Length: 173 Date: Wed, 01 Mar 2009 12:00:00 GMT Authorization: AWS[Signature]<RequestPaymentConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/"> <Payer>Requester</Payer> </RequestPaymentConfiguration>
如果请求成功,Amazon S3 将返回类似于以下内容的请求。
HTTP/1.1 200 OK x-amz-id-2: [id] x-amz-request-id: [request_id] Date: Wed, 01 Mar 2009 12:00:00 GMT Content-Length: 0 Connection: close Server: AmazonS3 x-amz-request-charged:requester
您只能在存储桶级别设置申请方付款。您无法为存储桶中的特定对象设置申请方付款。
您可以随时将存储桶配置为 BucketOwner 或 Requester。但是,新配置值可能需要几分钟才能生效。
注意
在将存储桶配置为申请方付款之前,分发预签名 URL 的存储桶拥有者应当再三考虑,尤其是在 URL 的生命周期非常长时更应如此。在每次申请方使用预签名 URL(使用存储桶拥有者的凭证)时,会向存储桶拥有者收取费用。