本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
设置用于数据导出的 Amazon S3 存储桶
您的 AWS 账户中必须有 Amazon S3 存储桶才能接收和存储导出的数据。在控制台中创建导出时,您可以选择自己拥有的现有 S3 存储桶,也可以创建新的存储桶。无论哪种情况,您都需要查看并确认应用了以下默认 S3 存储桶策略。在 Amazon S3 控制台中编辑此策略或在创建导出后更改 S3 存储桶拥有者会阻止 Data Exports 交付导出。在将导出数据存储在 S3 存储桶时,将按标准 Amazon S3 费率计费。有关更多信息,请参阅限额和限制。
注意
创建导出的账户还必须拥有将导出 AWS 发送到的 S3 存储桶。避免使用其他账户拥有的 S3 存储桶配置导出。
创建数据导出时,以下策略适用于每个 S3 存储桶:
{ "Version": "2012-10-17", "Statement": [ { "Sid": "EnableAWSDataExportsToWriteToS3AndCheckPolicy", "Effect": "Allow", "Principal": { "Service": [ "billingreports.amazonaws.com", "bcm-data-exports.amazonaws.com" ] }, "Action": [ "s3:PutObject", "s3:GetBucketPolicy" ], "Resource": [ "arn:aws:s3:::${bucket_name}/*", "arn:aws:s3:::${bucket_name}" ], "Condition": { "StringLike": { "aws:SourceAccount": "${accountId}", "aws:SourceArn": [ "arn:aws:cur:us-east-1:${accountId}:definition/*", "arn:aws:bcm-data-exports:us-east-1:${accountId}:export/*" ] } } } ] }
此 S3 存储桶策略可确保 Data Exports 只能代表创建导出的账户将导出交付到 S3 存储桶。它还允许 Data Exports 验证 S3 存储桶是否仍归创建导出的账户所有。
-
要将导出内容传送到您的 S3 存储桶, AWS 需要该 S3 存储桶的写入权限。为此,S3 存储桶策略会授予 Data Exports 服务 (
bcm-data-exports.amazonaws.com
) 将 (s3:PutObject
) 报告交付到您拥有的 S3 存储桶 (arn:aws:s3:::<EXAMPLE-BUCKET>/*
) 的权限。 -
每次 Data Exports 请求写入 S3 存储桶时,都必须提供创建导出的账户的账户 ID。条件键
aws:SourceArn
和aws:SourceAccount
会强制执行此操作。 -
此 S3 存储桶策略不 AWS 授予读取或删除 S3 存储桶中任何对象的权限,包括成本和使用情况报告。
对于启用了访问控制列表 (ACL) 的 Amazon S3 存储桶,Data Exports 会在交付报告时将 BucketOwnerFullControl
ACL 应用于报告。默认情况下,Amazon S3 对象(例如这些报告)只能由写入它们的用户或服务主体读取。要为您或 S3 存储桶拥有者提供读取报告的权限, AWS 需要应用 BucketOwnerFullControl
ACL。该 ACL 会向 S3 存储桶拥有者授予对这些报告的 Permission.FullControl
权限。但是,建议禁用 ACL 并使用 S3 存储桶策略来控制访问。
注意
对于新创建的 S3 存储桶,默认情况下 ACL 处于禁用状态。有关更多信息,请参阅为您的存储桶控制对象所有权和禁用 ACL。
如果您在 Data Exports 控制台页面中看到无效存储桶错误,请验证相应的策略和 S3 存储桶所有权自报告设置以来是否未发生任何更改。