View a markdown version of this page

启用或禁用注释表 - Amazon Simple Storage Service

启用或禁用注释表

默认情况下,元数据表配置包含一个日记表,该表记录存储桶中的对象发生的事件。每个元数据表配置都需要日记表。

或者,可以将注释表添加到元数据表配置中。注释表会跟踪存储桶中对象的所有注释,以便您可以大规模查询注释数据。

注释表包含存储桶中所有对象的最新注释。可以使用此表,通过根据对象的注释来识别对象,从而简化和加快业务工作流程和大数据作业。例如,可以查询注释表来执行以下操作:

  • 查找具有特定注释键或值的所有对象。

  • 在存储桶中的对象之间创建注释键的分布。

  • 查找具有由特定主体应用的注释的所有对象。

如果您选择为元数据表配置启用注释表,则该表将经历一个称为回填的过程,在此过程中,Amazon S3 扫描通用存储桶,以检索和填充存储桶中存在的所有对象的注释。根据存储桶中的对象数量,此过程可能需要若干分钟到几小时。完成回填过程后,注释表的状态将从正在回填更改为活跃。完成回填后,对于对象的更新通常会在一小时内反映在注释表中。

注意
  • 您需要为回填注释表付费。有关更多信息,请参阅 Amazon S3 定价

  • 无法暂停对注释表的更新,然后继续更新。但是,可以禁用注释表配置。禁用注释表不会将其删除。将为记录保留注释表,直到您决定将其删除。

    如果已禁用注释表,之后想重新启用它,则必须先从 AWS 托管式表存储桶中删除旧的注释表。当重新启用注释表配置时,Amazon S3 会创建一个新的注释表,并且您需要再次支付回填新注释表的费用。

可以使用 Amazon S3 控制台、AWS Command Line Interface(AWS CLI)、AWS SDK 或 Amazon S3 REST API 来启用或禁用注释表。

先决条件

如果已禁用注释表,现在想重新启用它,则必须先从 AWS 托管式表存储桶中手动删除旧的注释表。否则,由于表存储桶中已存在注释表,因此重新启用注释表将失败。要删除注释表,请参阅删除元数据表

当重新启用注释表配置时,Amazon S3 会创建一个新的注释表,并且您需要再次支付回填新注释表的费用。

注释表 IAM 角色

注释表需要一个 IAM 角色,该角色授予 Amazon S3 元数据从您的存储桶中读取注释的权限。创建此角色时,请使用以下信任和权限策略。

信任策略

以下信任策略将 Amazon S3 元数据标识为可以代入该角色的服务主体。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "metadata.s3.amazonaws.com" }, "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "aws:SourceAccount": "123456789012" }, "ArnLike": { "aws:SourceArn": "arn:aws:s3:::amzn-s3-demo-bucket" } } } ] }
权限策略

以下权限策略向 IAM 角色授予读取注释所需的最低权限。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "PermissionForGetAnnotation", "Effect": "Allow", "Action": [ "s3:GetObjectAnnotation", "s3:GetObjectVersionAnnotation" ], "Resource": ["arn:aws:s3:::amzn-s3-demo-bucket/*"] }, { "Sid": "PermissionsForListBucket", "Effect": "Allow", "Action": [ "s3:ListBucket", "s3:ListBucketVersions" ], "Resource": ["arn:aws:s3:::amzn-s3-demo-bucket"] }, { "Sid": "PermissionsForDecryptAnnotation", "Effect": "Allow", "Action": ["kms:Decrypt"], "Resource": ["*"] } ] }

如果您的对象使用 SSE-KMS 加密,则 kms:Decrypt 权限涵盖用于加密对象的 AWS KMS 密钥的解密。您还需要 iam:PassRole 权限才能将角色分配给注释表配置。

启用或禁用注释表

启用或禁用注释表
  1. 登录到 AWS 管理控制台,然后通过以下网址打开 Amazon S3 控制台:https://console.aws.amazon.com/s3/

  2. 在左侧导航窗格中,选择通用存储桶

  3. 选择通用存储桶,该存储桶具有要为其启用或禁用注释表的元数据表配置。

  4. 在存储桶的详细信息页面上,选择元数据选项卡。

  5. 元数据选项卡上,选择编辑,然后选择编辑注释表配置

  6. 编辑注释表配置页面上,在注释表下方选择已启用已禁用

    注意

    在选择已启用之前,请确保您已查看并符合先决条件

    • 如果您选择了已启用,请在 IAM 角色下选择以下 IAM 角色选择方法之一:

      • 创建新的 IAM 角色:Amazon S3 将创建一个新的 IAM 角色,该角色具有注释表所需的权限。

      • 从现有 IAM 角色中选择:从 IAM 角色下拉列表中选择一个现有 IAM 角色。该角色必须具有所需的权限,才能读取存储桶中的注释。

      • 输入 IAM 角色 ARN:输入具有所需权限的现有 IAM 角色的 ARN。

      有关注释表 IAM 角色所需权限的更多信息,请参阅注释表 IAM 角色

      还可以选择是否通过使用 AWS Key Management Service(AWS KMS)密钥的服务器端加密(SSE-KMS)来对表进行加密。默认情况下,注释表通过使用 Amazon S3 托管式密钥的服务器端加密(SSE-S3)来进行加密。

      如果您选择使用 SSE-KMS,则必须提供与通用存储桶位于同一区域的客户自主管理型 KMS 密钥。

      重要

      只能在创建表的过程中为元数据表设置加密类型。创建 AWS 托管式表后,无法更改其加密设置。

      • 要使用 SSE-S3(默认)加密注释表,请选择不指定加密类型

      • 要使用 SSE-KMS 加密注释表,请选择指定加密类型。在加密类型下,选择使用 AWS Key Management Service(AWS KMS)密钥的服务器端加密(SSE-KMS)。在 AWS KMS 密钥下,从现有 KMS 密钥中进行选择,或者输入 KMS 密钥 ARN。如果您还没有 KMS 密钥,请选择输入 KMS 密钥 ARN,然后选择创建 KMS 密钥

    • 如果选择了已禁用,则在禁用注释表后,该表将不再更新,也无法继续更新下,选中该复选框。

  7. 选择保存更改

要运行以下命令,您必须安装并配置 AWS CLI。如果未安装 AWS CLI,请参阅《AWS Command Line Interface 用户指南》中的安装或更新最新版本的 AWS CLI

或者,可以从控制台中使用 AWS CloudShell 运行 AWS CLI 命令。AWS CloudShell 是一个基于浏览器、预先经过身份验证的 Shell,您可以直接从 AWS 管理控制台中启动它。有关更多信息,请参阅《AWS CloudShell 用户指南》中的 What is CloudShell?Getting started with AWS CloudShell

使用 AWS CLI 启用或禁用注释表

要使用以下示例命令,请将 user input placeholders 替换为您自己的信息。

注意

在启用注释配置之前,请确保您已查看并符合先决条件

  1. 创建包含注释表配置的 JSON 文件并将其保存(例如 annotation-config.json)。以下是一个用于启用新注释表的示例配置。

    如果要启用注释表,则可以选择指定加密配置。默认情况下,元数据表通过使用 Amazon S3 托管式密钥的服务器端加密(SSE-S3)进行加密,可以通过将 SseAlgorithm 设置为 AES256 来指定此加密方式。

    要通过使用 AWS Key Management Service(AWS KMS)密钥的服务器端加密(SSE-KMS)来加密注释表,请将 SseAlgorithm 设置为 aws:kms。还必须将 KmsKeyArn 设置为通用存储桶所在区域中客户自主管理型 KMS 密钥的 ARN。

    { "ConfigurationState": "ENABLED", "Role": "arn:aws:iam::account-id:role/annotation-table-role", "EncryptionConfiguration": { "SseAlgorithm": "aws:kms", "KmsKeyArn": "arn:aws:kms:us-east-2:account-id:key/key-id" } }

    首次启用注释表或更改 IAM 角色时,Role 字段为必填字段。该角色必须向 Amazon S3 元数据授予从您的存储桶中读取注释的权限。有关更多信息,请参阅注释表 IAM 角色

    如果要禁用现有注释表,请使用以下配置:

    { "ConfigurationState": "DISABLED" }
  2. 使用以下命令更新通用存储桶(例如 amzn-s3-demo-bucket)的注释表配置:

    aws s3api update-bucket-metadata-annotation-table-configuration \ --bucket amzn-s3-demo-bucket \ --annotation-table-configuration file://./annotation-config.json \ --region us-east-2

可以发送 REST 请求来启用或禁用注释表。有关更多信息,请参阅 UpdateBucketMetadataAnnotationTableConfiguration

在 Amazon S3 中可以使用 AWS SDK 来启用或禁用注释表。有关信息,请参阅 list of supported SDKs