

# 注釈テーブルの有効化または無効化
<a name="metadata-tables-enable-disable-annotation-tables"></a>

デフォルトでは、メタデータテーブル設定には、バケット内のオブジェクトに対して発生したイベントを記録する*ジャーナルテーブル*が含まれています。ジャーナルテーブルは、メタデータテーブル設定ごとに必要です。

必要に応じて、メタデータテーブル設定に*注釈テーブル*を追加できます。注釈テーブルは、バケット内のオブジェクトのすべての注釈を追跡するため、注釈データを大規模にクエリできます。

注釈テーブルには、バケット内のすべてのオブジェクトの最新の注釈が含まれています。このテーブルを使用して、注釈に基づいてオブジェクトを識別することで、ビジネスワークフローとビッグデータジョブを簡素化および高速化できます。例えば、注釈テーブルをクエリして、以下のことができます。
+ 特定の注釈キーまたは値を持つすべてのオブジェクトを検索します。
+ バケットのオブジェクト間で注釈キーのディストリビューションを作成します。
+ 特定のプリンシパルによって注釈が適用されているすべてのオブジェクトを検索します。

メタデータテーブル設定で注釈テーブルの有効化を選択した場合、テーブルで*バックフィル*と呼ばれるプロセスが実行されます。そのプロセス中に Amazon S3 は汎用バケットをスキャンして、バケットに存在するすべてのオブジェクトを取得し、注釈を入力します。バケット内のオブジェクトの数によっては、このプロセスに数分から数時間かかる場合があります。バックフィルプロセスが完了すると、注釈テーブルのステータスが **[バックフィル]** から **[アクティブ]** に変わります。バックフィルが完了すると、通常、オブジェクトの更新は 1 時間以内に注釈テーブルに反映されます。

**注記**  
注釈テーブルのバックフィルには料金がかかります。詳細については、[Amazon S3 の料金](https://aws.amazon.com/s3/pricing/) を参照してください。
注釈テーブルの更新を一時停止して再開することはできません。ただし、注釈テーブルの設定を無効にすることはできます。注釈テーブルを無効にしても削除されません。注釈テーブルは、削除するまでレコード用に保持されます。  
注釈テーブルを無効にし、後で再度有効にする場合は、まず AWS マネージドテーブルバケットから古い注釈テーブルを削除する必要があります。注釈テーブル設定を再度有効にすると、Amazon S3 は新しい注釈テーブルを作成するため、新しい注釈テーブルのバックフィルに対して再度課金されます。

Amazon S3 コンソール、AWS Command Line Interface (AWS CLI)、AWS SDK、または Amazon S3 REST API を使用して、注釈テーブルを有効または無効にできます。

**前提条件**  
注釈テーブルを無効にし、今すぐ再度有効にする場合は、まず AWS マネージドテーブルバケットから古い注釈テーブルを手動で削除する必要があります。削除しない場合、注釈テーブルがテーブルバケットに既に存在するため、注釈テーブルの再有効化は失敗します。注釈テーブルを削除する方法については、「[メタデータテーブルを削除する](metadata-tables-delete-table.md#delete-metadata-table-procedure)」を参照してください。

注釈テーブル設定を再度有効にすると、Amazon S3 は新しい注釈テーブルを作成するため、新しい注釈テーブルのバックフィルに対して再度課金されます。

## 注釈テーブルの IAM ロール
<a name="annotation-table-iam-role-section"></a>

注釈テーブルには、バケットから注釈を読み取るアクセス許可を Amazon S3 メタデータに付与する IAM ロールが必要です。このロールを作成するときは、以下の信頼ポリシーとアクセス許可ポリシーを使用してください。

**信頼ポリシー**  
以下の信頼ポリシーでは、このロールを引き受けることができるサービスプリンシパルとして Amazon S3 Metadata を指定します。

```
{
    "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` アクセス許可も必要です。

## 注釈テーブルを有効または無効にする
<a name="metadata-tables-enable-disable-annotation-tables-procedure"></a>

### S3 コンソールの使用
<a name="metadata-tables-enable-disable-annotation-tables-console"></a>

**注釈テーブルを有効または無効にするには**

1. AWS マネジメントコンソール にサインインし、Amazon S3 コンソール [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/) を開きます。

1. 左のナビゲーションペインで、**[汎用バケット]** を選択します。

1. 注釈テーブルを有効または無効にするメタデータテーブル設定を持つ汎用バケットを選択します。

1. バケットの詳細ページで、**[メタデータ]** タブを選択します。

1. **[メタデータ]** タブで、**[編集]** を選択し、**[注釈テーブル設定を編集]** を選択します。

1. **[注釈テーブル設定を編集]** ページで、**[注釈テーブル]** の **[有効]** または **[無効]** を選択します。
**注記**  
**[有効]** を選択する前に、[[前提条件]](#annotation-table-config-prereqs) を確認し、満たしていることを確認してください。
   + **[有効]** を選択した場合は、**[IAM ロール]** で、次のいずれかの IAM ロール選択方法を選択します。
     + **新しい IAM ロール**の作成 – Amazon S3 は、注釈テーブルに必要なアクセス許可を持つ新しい IAM ロールを作成します。
     + **既存の IAM ロールから選択** – **[IAM ロール]** ドロップダウンから、既存の IAM ロールを選択します。このロールには、バケットから注釈を読み取るために必要なアクセス許可が必要です。
     + **IAM ロールの ARN の入力** – 必要なアクセス許可を持つ既存の IAM ロールの ARN を入力します。

     注釈テーブルの IAM ロールに必要なアクセス許可の詳細については、「[Annotation table IAM role](#annotation-table-iam-role-section)」を参照してください。

     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 キーを作成する]** を選択します。
   + **[無効]** を選択した場合は、**[注釈テーブルが無効になると、テーブルは更新されなくなり、更新を再開できなくなる]** チェックボックスをオンにします。

1. **[Save changes]** (変更の保存) をクリックします。

### の使用AWS CLI
<a name="metadata-tables-enable-disable-annotation-tables-cli"></a>

次のコマンドを実行するには、AWS CLI をインストールして設定する必要があります。AWS CLI をまだインストールしていない場合は、「*AWS Command Line Interface ユーザーガイド*」の「[AWS CLI の最新バージョンのインストールまたは更新](https://docs.aws.amazon.com//cli/latest/userguide/getting-started-install.html)」を参照してください。

別の方法として、AWS CloudShell を使用してコンソールから AWS CLI コマンドを実行することもできます。AWS CloudShell は、AWS マネジメントコンソールから直接起動できる、ブラウザベースの事前認証済みシェルです。詳細については、「AWS CloudShell ユーザーガイド」の「[CloudShell とは](https://docs.aws.amazon.com//cloudshell/latest/userguide/welcome.html)」と「[AWS CloudShell の使用開始](https://docs.aws.amazon.com//cloudshell/latest/userguide/getting-started.html)」を参照してください。**

**AWS CLI を使用して注釈テーブルを有効または無効にするには**

次のコマンド例を使用する際は、`{{user input placeholders}}` をユーザー自身の情報に置き換えます。
**注記**  
注釈設定を有効にする前に、[[前提条件]](#annotation-table-config-prereqs) を確認し、それらの条件を満たしていることを確認してください。

1. 注釈テーブル設定を含む JSON ファイルを作成し、保存します (例: `annotation-config.json`)。以下は、新しい注釈テーブルを有効にするための設定例です。

   注釈テーブルを有効にする場合は、オプションで暗号化設定を指定できます。デフォルトでは、メタデータテーブルは Amazon S3 マネージドキー (SSE-S3) を使用したサーバー側の暗号化で暗号化されます。この暗号化は、`SseAlgorithm` を `AES256` に設定することで指定できます。

   AWS Key Management Service (AWS KMS) キー (SSE-KMS) を使用したサーバー側の暗号化を使用して注釈テーブルを暗号化するには、`SseAlgorithm` を `aws:kms` に設定します。また、汎用バケットがあるリージョンと同じリージョンで、カスタマーマネージド KMS キーの ARN に `KmsKeyArn` を設定する必要があります。

   ```
   {
     "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 メタデータに付与する必要があります。詳細については、「[Annotation table IAM role](#annotation-table-iam-role-section)」を参照してください。

   既存の注釈テーブルを無効にする場合は、次の設定を使用します。

   ```
   {
     "ConfigurationState": "DISABLED"  }
   ```

1. 次のコマンドを使用して、汎用バケットの注釈テーブル設定を更新します (例: `{{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 API の使用
<a name="metadata-tables-enable-disable-annotation-tables-rest-api"></a>

REST リクエストを送信して、注釈テーブルを有効または無効にできます。詳細については、[ を参照してください。UpdateBucketMetadataAnnotationTableConfiguration](https://docs.aws.amazon.com/AmazonS3/latest/API/API_UpdateBucketMetadataAnnotationTableConfiguration.html)

### AWS SDK の使用
<a name="metadata-tables-enable-disable-annotation-tables-sdk"></a>

AWS SDK を使用して、Amazon S3 の注釈テーブルを有効または無効にできます。詳細については、「[サポートされる SDK のリスト](https://docs.aws.amazon.com/AmazonS3/latest/API/API_UpdateBucketMetadataAnnotationTableConfiguration.html#API_UpdateBucketMetadataAnnotationTableConfiguration_SeeAlso)」を参照してください。