配置 Amazon S3 清单 - Amazon Simple Storage Service
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

配置 Amazon S3 清单

Amazon S3 清单提供您的对象和元数据的平面文件列表,该列表将有计划地取代 Amazon S3 同步 List API 操作。Amazon S3 清单每天或每周为 S3 存储桶或为共享前缀的对象(即,其名称以相同字符串开头的对象)提供逗号分隔值 (CSV) 或 Apache 优化行列式 (ORC)Apache Parquet (Parquet) 输出文件,其中列出您的对象及其对应元数据。有关更多信息,请参阅 Amazon S3 清单

本部分介绍了如何设置清单,包括有关清单源存储桶和目标存储桶的详细信息。

概览

Amazon S3 清单将帮助您按预定的计划创建 S3 存储桶中的对象的列表,由此管理存储。您可以为存储桶配置多个清单列表。清单列表将发布到目标存储桶中的 CSV、ORC 或 Parquet 文件。

设置清单的最简单方法是使用 Amazon Web Services Management Console,不过您也可以使用 REST API、Amazon CLI 或Amazon 开发工具包。控制台将为您执行以下过程的第一步:将存储桶策略添加到目标存储桶。

为 S3 存储桶设置 Amazon S3 清单

  1. 为目标存储桶添加存储桶策略。

    您必须在目标存储桶上创建存储桶策略,以向 Amazon S3 授予将对象写入已定义位置的存储桶的权限。有关策略示例,请参阅向 Amazon S3 清单和 Amazon S3 分析功能授予权限

  2. 配置一个清单以列出源存储桶中的对象并将该列表发布到目标存储桶。

    当您为源存储桶配置清单列表时,您应指定用于存储该列表的目标存储桶,以及是每天还是每周生成一次列表。您还可以配置要包含的对象元数据以及是列出所有对象版本还是仅列出最新版本。

    您可以指定使用 Amazon S3 托管密钥 (SSE-S3) 或 Amazon Key Management Service (Amazon KMS) 客户托管密钥来加密清单列表文件。有关 SSE-S3 和 SSE-KMS 的更多信息,请参阅 使用服务器端加密保护数据。如果您打算使用 SSE-KMS 加密,请参阅步骤 3。

    • 有关如何使用控制台配置清单列表的信息,请参阅配置 Amazon S3 清单

    • 要使用 Amazon S3 API 来配置清单列表,请使用 PUT 存储桶清单配置 REST API,或者使用 Amazon CLI 或 Amazon 开发工具包中的等效工具。

  3. 要使用 SSE-KMS 加密清单列表文件,授予 Amazon S3 使用 Amazon KMS key 的权限。

    您可以使用 Amazon Web Services Management Console、REST API、Amazon CLI 或 Amazon 开发工具包,为清单列表文件配置加密。无论选择哪种方式,您都必须授予 Amazon S3 相应权限使用客户托管密钥来加密清单文件。可通过修改要用于加密清单文件的客户托管密钥的密钥策略,向 Amazon S3 授予权限。有关更多信息,请参阅下一部分:向 Amazon S3 授予权限以使用 Amazon KMS key 进行加密

  4. 要配置清单,请参阅使用 S3 控制台配置清单

    如果您对目标存储桶中的 Amazon S3 清单配置的跨账户操作使用加密,则应使用完全限定的 KMS 密钥 ARN。有关更多信息,请参阅 使用加密进行跨账户操作ServerSideEncryptionByDefault

创建目标存储桶策略

如果您通过 S3 控制台创建清单配置,Amazon S3 会自动在授予 Amazon S3 写入权限的目标存储桶上创建存储桶策略。如果您通过 Amazon CLI、开发工具包或 REST API 创建清单配置,您必须在目标存储桶上手动添加存储桶策略。有关更多信息,请参阅向 Amazon S3 清单和 Amazon S3 分析功能授予权限。Amazon S3 清单目标存储桶策略允许 Amazon S3 将清单报告的数据写入存储桶。

如果在您尝试创建存储桶策略出现错误,则将为您提供相关修复说明。例如,如果您在其他 Amazon Web Services 账户 中选择了目标存储桶,而没有权限读取和写入存储桶策略,则您会看到一条错误消息。

在这种情况下,目标存储桶拥有者必须将显示的存储桶策略添加到目标存储桶中。如果策略未添加到目标存储桶中,则您不会获得清单报告,因为 Amazon S3 无权写入目标存储桶。如果源存储桶属于其他账户而非当前用户,则在策略中必须替换掉源存储桶的正确账户 ID。

向 Amazon S3 授予权限以使用 Amazon KMS key 进行加密

要向 Amazon S3 授予使用客户托管 Amazon Key Management Service (Amazon KMS) 密钥进行加密的权限,必须使用密钥策略。要更新密钥策略,以便您能够使用客户托管密钥,请按照以下步骤操作。

授予使用您的 KMS 密钥进行加密的权限

  1. 使用拥有客户托管密钥的 Amazon 账户,登录 Amazon Web Services Management Console。

  2. https://console.aws.amazon.com/kms 打开 Amazon KMS 控制台。

  3. 要更改 Amazon Web Services 区域,请使用页面右上角的 Region selector(区域选择器)。

  4. 在左侧导航窗格中,选择 Customer managed keys (客户托管密钥)

  5. Customer managed keys (客户托管密钥)下,选择要用于加密清单文件的客户托管密钥。

  6. Key policy (密钥策略) 下,选择 Switch to policy view (切换到策略视图)

  7. 要更新密钥策略,选择 Edit (编辑)

  8. Edit key policy (编辑密钥策略) 下,将以下密钥策略添加到现有密钥策略。

    { "Sid": "Allow Amazon S3 use of the KMS key", "Effect": "Allow", "Principal": { "Service": "s3.amazonaws.com" }, "Action": [ "kms:GenerateDataKey" ], "Resource": "*", "Condition":{ "StringEquals":{ "aws:SourceAccount":"source-account-id" }, "ArnLike":{ "aws:SourceARN": "arn:aws:s3:::source-bucket-name" } } }
  9. 选择保存更改

有关创建客户托管密钥和使用密钥策略的更多信息,请参阅 Amazon Key Management Service 开发人员指南中的以下链接:

使用 S3 控制台配置清单

按照以下说明使用 S3 控制台配置清单。

注意

交付第一份报告可能需要多达 48 小时。

  1. 登录到 Amazon Web Services Management Console,然后通过以下网址打开 Amazon S3 控制台:https://console.aws.amazon.com/s3/

  2. Buckets(存储桶)列表中,选择要为其配置 Amazon S3 清单的存储桶的名称。

  3. 选择 Management (管理)

  4. Inventory configurations (清单配置) 下,选择 Create inventory configuration (创建清单配置)

  5. Inventory configuration name (清单配置名称) 中,输入名称。

  6. 设置 Inventory scope (清单范围)

    • 输入可选的前缀。

    • 选择对象版本:Current versions only (仅限当前版本)Include all versions (包括所有版本)

  7. Report details (报告详细信息) 下,选择要将报告保存到的 Amazon Web Services 账户 的位置:此账户另一个账户

  8. Destination (目标) 下面,选择要将报告保存到的目标存储桶。

    目标存储桶必须位于与您为其设置清单的存储桶相同的 Amazon Web Services 区域 中。目标存储桶可处于不同的 Amazon Web Services 账户 中。在 Destination (目标) 存储桶字段下,您将看到 Destination bucket permission (目标存储桶权限),该权限添加到目标存储桶策略中以允许 Amazon S3 在该存储桶中放置数据。有关更多信息,请参阅 创建目标存储桶策略

  9. Frequency (频率) 下,选择生成报告的频率:Daily (每日)Weekly (每周)

  10. 选择报告的 Output format (输出格式)

    • CSV

    • Apache ORC

    • Apache Parquet

  11. Status (状态) 下,选择 Enable (启用)Disable (禁用)

  12. 要使用服务器端加密,请在 Server-side encryption (服务器端加密) 下,执行以下步骤:

    1. 选择 Enable

    2. Encryption key type (加密密钥类型) 下,选择 Amazon S3 key (SSE-S3) (Amazon S3 密钥(SSE-S3))Amazon Key Management Service key (SSE-KMS) (Key Management Service 密钥(SSE-KMS))

      Amazon S3 服务器端加密使用 256 位高级加密标准 (AES-256)。有关更多信息,请参阅 使用具有 Amazon S3 托管加密密钥的服务器端加密 (SSE-S3) 保护数据。有关 SSE-KMS 的更多信息,请参阅 使用具有 Amazon Key Management Service (SSE-KMS) 的服务器端加密保护数据

    3. 要使用 Amazon KMS key,请选择以下选项之一:

      • 从 Amazon KMS keys 中选择,然后选择 KMS 密钥

      • 输入 Amazon KMS key ARN,然后输入您的 Amazon KMS 密钥 ARN。

      注意

      要使用 SSE-KMS 加密清单列表文件,您必须授予 Amazon S3 使用 Amazon KMS key 的权限。因此,您只能使用客户托管式密钥,而不是 Amazon 托管式密钥 (aws/s3)。有关说明,请参阅向 Amazon S3 授予权限以使用 Amazon KMS key 进行加密

  13. 对于 Additional fields (其他字段),从下面选择一项或多项以添加到清单报告:

    • 大小 – 对象大小(以字节为单位)。

    • Last modified date (上次修改日期) – 对象创建日期或上次修改日期(以较晚者为准)。

    • Storage class (存储类) – 用于存储对象的存储类。

    • ETag – 实体标签是对象的哈希。ETag 仅反映对对象内容的更改,而不反映对其元数据的更改。ETag 可能是也可能不是对象数据的 MD5 摘要。是与不是取决于对象的创建方式和加密方式。

    • Multipart upload(分段上载)– 指定对象以分段上载形式上传。有关更多信息,请参阅 使用分段上传来上传和复制对象

    • Replication status (复制状态) – 对象的复制状态。有关更多信息,请参阅 使用 S3 控制台

    • Encryption status (加密状态) – 用于加密对象的服务器端加密。有关更多信息,请参阅 使用服务器端加密保护数据

    • S3 Object lock configurations(S3 对象锁定配置)– 对象的对象锁定状态,包括以下设置:

      • Retention mode (保留模式) – 应用于对象的保护级别,可以是 Governance (监管)Compliance (合规)

      • Retain until date (保留到期日期) – 在此日期之前无法删除锁定对象。

      • Legal hold status (依法保留状态) – 锁定对象的依法保留状态。

      有关 S3 对象锁定的更多信息,请参阅S3 对象锁定的工作原理

    • 智能分层访问层 – 如果存储在“智能分层”中,则表示对象的访问层(频繁或不频繁)。有关更多信息,请参阅 用于自动优化访问模式不断变化或未知的数据的存储类

    • S3 Bucket 密钥状态 – 指示存储桶级密钥是否由 Amazon KMS 应用于对象。有关更多信息,请参阅使用 Amazon S3 Bucket 密钥降低 SSE-KMS 的成本

    • 校验和算法 – 表示用于创建对象校验和的算法。

    有关清单报告内容的更多信息,请参阅 Amazon S3 清单列表

  14. 选择 Create (创建)