配置 Amazon S3 清单 - Amazon Simple Storage Service

配置 Amazon S3 清单

Amazon S3 清单每天根据您定义的时间表,提供您的对象和元数据的平面文件列表。您可以使用 S3 清单作为 Amazon S3 同步 List API 操作的计划替代方案。S3 清单提供逗号分隔值(CSV)、经过 Apache 优化的行列式(ORC)Apache Parquet(Parquet)输出文件,这些文件列出了对象及其相应的元数据。您可以将 S3 清单配置为每天或每周为 S3 桶或为共享前缀的对象(名称以相同字符串开头的对象)创建清单列表。有关更多信息,请参阅Simple Storage Service (Amazon S3) 清单

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

概览

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

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

为 S3 桶设置 Amazon S3 清单

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

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

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

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

    您可以指定使用具有 Amazon S3 托管式密钥(SSE-S3)或具有 AWS Key Management Service(AWS KMS)客户自主管理型密钥(SSE-KMS)的服务器端加密来加密清单列表文件。

    注意

    使用 S3 清单进行的 SSE-KMS 加密不支持 AWS 托管式密钥(aws/s3)。

    有关 SSE-S3 和 SSE-KMS 的更多信息,请参阅 使用服务器端加密保护数据。如果您打算使用 SSE-KMS 加密,请参阅步骤 3。

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

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

  3. 要使用 SSE-KMS 加密清单列表文件,请授予 Amazon S3 使用客户自主管理型密钥的权限。

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

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

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

创建目标桶策略

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

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

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

向 Amazon S3 授予权限以使用客户自主管理型密钥进行加密

要向 Amazon S3 授予使用 AWS Key Management Service(AWS KMS)客户自主管理型密钥进行服务器端加密的权限,必须使用密钥策略。要更新密钥策略,以便您能够使用客户自主管理型密钥,请使用以下过程。

授予使用客户自主管理型密钥进行加密的权限
  1. 使用拥有客户自主管理型密钥的 AWS Management Console,登录 AWS 账户。

  2. 在 AWS KMShttps://console.aws.amazon.com/kms 打开 控制台。

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

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

  5. 客户自主管理型密钥下,选择要用于加密清单文件的客户自主管理型密钥。

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

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

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

    { "Sid": "Allow Amazon S3 use of the customer managed 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. 选择 Save changes (保存更改)

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

使用 S3 控制台配置清单

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

注意

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

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

  2. 在左侧导航窗格中,选择

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

  4. 选择 Management (管理)

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

  6. 对于清单配置名称,输入名称。

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

    • 输入可选的前缀。

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

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

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

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

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

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

    • CSV

    • Apache ORC

    • Apache Parquet

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

  13. 要配置服务器端加密,请在清单报告加密下执行以下步骤:

    1. 服务器端加密下,选择不要指定加密密钥指定加密密钥来加密数据。

      • 要在将对象存储在 Amazon S3 中时保留适用于对象原定设置服务器端加密的桶设置,请选择不要指定加密密钥。只要桶目标启用了 S3 桶密钥,复制操作就将在目标桶上应用 S3 桶密钥。

        注意

        如果指定的目标的桶策略要求在将对象存储到 Amazon S3 之前对其进行加密,则必须指定加密密钥。否则,将对象复制到目标将失败。

      • 要在将对象存储到 Amazon S3 之前对其进行加密,请选择指定加密密钥

    2. 如果您选择指定加密密钥,在加密密钥类型下,您需要选择 Amazon S3 托管式密钥(SSE-S3)AWS Key Management Service 密钥(SSE-KMS)

      SSE-S3 使用最强的数据块密码之一 [即 256 位高级加密标准(AES-256)] 来加密每个对象。SSE-KMS 为您提供了对密钥的更多控制。有关 SSE-S3 的更多信息,请参阅使用具有 Amazon S3 托管式加密密钥的服务器端加密(SSE-S3)保护数据。有关 SSE-KMS 的更多信息,请参阅 使用具有 AWS Key Management Service 密钥的服务器端加密(SSE-KMS)保护数据

      注意

      要使用 SSE-KMS 加密清单列表文件,必须授予 Amazon S3 使用客户自主管理型密钥的权限。有关说明,请参阅授予 Amazon S3 使用 KMS 密钥进行加密的权限

    3. 如果您选择了 AWS Key Management Service 密钥(SSE-KMS),则在 AWS KMS key 之下,您可以通过以下选项之一指定 AWS KMS 密钥。

      • 要从可用 KMS 密钥列表中进行选择,请选择从您的 AWS KMS 密钥中进行选择,然后从可用密钥列表中选择与桶位于同一区域的对称加密 KMS 密钥。

        注意

        AWS 托管式密钥(aws/s3)和您的客户自主管理型密钥都显示在列表中。但是,使用 S3 清单进行的 SSE-KMS 加密不支持 AWS 托管式密钥(aws/s3)。

      • 要输入 KMS 密钥 ARN,请选择输入 AWS KMS 密钥 ARN,然后在显示的字段中输入您的 KMS 密钥 ARN。

      • 要在 AWS KMS 控制台中创建新的客户自主管理型密钥,请选择创建 KMS 密钥

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

    • 大小 - 以字节为单位的对象大小,不包括未完成的分段上传、对象元数据和删除标记的大小。

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

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

    • ETag – 实体标签(ETag)是对象的哈希。ETag 仅反映对对象内容的更改,而不反映对其元数据的更改。ETag 可能是该对象数据的 MD5 摘要,也可能不是。是与不是取决于对象的创建方式和加密方式。有关详细信息,请参阅《Amazon Simple Storage Service API 参考》中的对象

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

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

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

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

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

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

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

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

    • Intelligent-Tiering 访问层 – 如果对象存储在 S3 Intelligent-Tiering 中,则表示对象的访问层。有关更多信息,请参阅用于自动优化访问模式不断变化或未知的数据的存储类

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

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

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

  15. 选择 Create(创建)。