

# マネージドクエリ結果
<a name="managed-results"></a>

マネージドクエリ結果を使用することで、クエリ結果ストレージ用の Amazon S3 バケットを指定せずに SQL クエリを実行できるようになります。これにより、独自の S3 バケットをプロビジョニング、管理、アクセスの制御、クリーンアップする必要がなくなります。開始するには、新しいワークグループを作成するか、既存のワークグループを編集します。**[クエリ結果の設定]** で、**[Athena マネージド]** を選択します。

**主な特徴**
+ クエリを実行する前に S3 バケットの場所を選択する要件を削除することで、ワークフローを簡素化します。
+ マネージドクエリ結果の使用とクエリ結果の自動削除に追加のコストがかからないため、管理オーバーヘッドが削減され、個別の S3 バケットクリーンアッププロセスが不要になります。
+ 開始が簡単: マネージドクエリ結果を使用するように新規および既存のワークグループを簡単に設定できます。AWS アカウントで Athena マネージドクエリ結果とカスタマーマネージドクエリ結果を混在させることができます。
+ 個々のワークグループに関連付けられた `GetQueryResults` と `GetQueryResultsStream` を介して結果を読み取るアクセス許可で、IAM アクセス許可を合理化しました。
+ クエリ結果は、選択した AWS 所有キーまたはカスタマー所有キーで自動的に暗号化されます。

## 考慮事項と制限事項
<a name="managed-results-considerations"></a>

****
+ クエリ結果へのアクセスは、Athena のワークグループレベルで管理されます。そのため、特定のワークグループに対する `GetQueryResults` および `GetQueryResultsStream` IAM アクションへの明示的なアクセス許可が必要です。`GetQueryResults` アクションは、完了したクエリの結果をページ分割形式で取得できるユーザーを決定します。一方、`GetQueryResultsStream` アクションは、完了したクエリの結果をストリーミングできるユーザーを決定します (Athena ドライバーで一般的に使用されます)。
+ 200 MB を超えるクエリ結果ファイルをコンソールからダウンロードすることはできません。`UNLOAD` ステートメントを使用して、200 MB を超える結果を個別にダウンロードできる場所に書き込みます。
+ マネージドクエリ結果機能は、[クエリ結果の再利用](reusing-query-results.md)をサポートしていません。
+ クエリ結果は 24 時間利用できます。この期間中、クエリ結果は無償で保存されます。この期間を過ぎると、クエリ結果は自動的に削除されます。

## マネージドクエリ結果を使用してワークグループを作成または編集する
<a name="using-managed-query-results"></a>

コンソールからワークグループを作成したり、マネージドクエリ結果を使用して既存のワークグループを更新したりする方法

1. [https://console.aws.amazon.com/athena/](https://console.aws.amazon.com/athena/) で Athena コンソールを開きます。

1. 左側のナビゲーションから **[ワークグループ]** を選択します。

1. **[ワークグループを作成]** を選択して新しいワークグループを作成するか、リストから既存のワークグループを編集します。

1. **[クエリ結果の設定]**で、**[Athena マネージド]** を選択します。  
![クエリ結果の設定メニュー。](http://docs.aws.amazon.com/ja_jp/athena/latest/ug/images/athena-managed.png)

1. **クエリ結果を暗号化**する場合は、必要な暗号化オプションを選択します。詳細については、「[クエリ結果の暗号化を選択する](#managed-query-results-encryption-at-rest)」を参照してください。

1. その他の必要な詳細をすべて入力し、**[変更を保存]** を選択します。

## クエリ結果の暗号化を選択する
<a name="managed-query-results-encryption-at-rest"></a>

暗号化の設定には次の 2 つのオプションがあります。
+ **AWS 所有キーを使用して暗号化する** – マネージドクエリ結果を使用する場合のデフォルトのオプションです。クエリ結果を AWS 所有キーで暗号化する場合は、このオプションを選択します。
+ **カスタマーマネージドキーを使用して暗号化する** – カスタマーマネージドキーを使用してクエリ結果を暗号化および復号する場合は、このオプションを選択します。カスタマーマネージドキーを使用するには、キーポリシーセクションのプリンシパル要素に Athena サービスを追加します。詳細については、「[マネージドクエリ結果の AWS KMS キーポリシーを設定する](#managed-query-results-set-up)」を参照してください。クエリを正常に実行するには、クエリを実行しているユーザーに AWS KMS キーへのアクセス許可を付与する必要があります。

## マネージドクエリ結果の AWS KMS キーポリシーを設定する
<a name="managed-query-results-set-up"></a>

キーポリシーの `Principal` セクションでは、このキーを使用できるユーザーを指定します。マネージドクエリ結果機能には、`Principal` セクションで指定する必要があるプリンシパル `encryption.athena.amazonaws.com` が導入されています。このサービスプリンシパルは、Athena が所有していないキーへのアクセス専用です。また、マネージド結果にアクセスするために使用するキーポリシーに、`kms:Decrypt`、`kms:GenerateDataKey`、および `kms:DescribeKey` アクションを追加する必要があります。これらの 3 つのアクションは、許可された最小限のアクションです。

マネージドクエリの結果は、[暗号化コンテキスト](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#encrypt_context)にワークグループ ARN を使用します。`Principal` セクションは AWS サービスであるため、キーポリシー条件に `aws:sourceArn` と `aws:sourceAccount` も追加する必要があります。次の例は、1 つのワークグループに対する最小限のアクセス許可を持つ AWS KMS キーポリシーを示しています。

```
 {
    "Sid": "Allow athena service principal to use the key",
    "Effect": "Allow",
    "Principal": {
        "Service": "encryption.athena.amazonaws.com"
    },
    "Action": [
        "kms:Decrypt",
        "kms:GenerateDataKey",
        "kms:DescribeKey"
      ],
    "Resource": "arn:aws:kms:us-east-1:{{{account-id}}}:key/{{{key-id}}}",
    "Condition": {
    "ArnLike": {
        "kms:EncryptionContext:aws:athena:arn": "arn:aws:athena:us-east-1:{{{account-id}}}:workgroup/{{{workgroup-name}}}",
        "aws:SourceArn": "arn:aws:athena:us-east-1:{{{account-id}}}:workgroup/{{{workgroup-name}}}"
    },
    "StringEquals": {
        "aws:SourceAccount": "{{{account-id}}}"
    }
}
```

次の AWS KMS キーポリシーの例では、同じアカウント {{account-id}} 内のすべてのワークグループに同じ AWS KMS キーの使用を許可します。

```
{
    "Sid": "Allow athena service principal to use the key",
    "Effect": "Allow",
    "Principal": {
        "Service": "encryption.athena.amazonaws.com"
    },
    "Action": [
        "kms:Decrypt",
        "kms:GenerateDataKey",
        "kms:DescribeKey"
    ],
    "Resource": "arn:aws:kms:us-east-1:{{account-id}}:key/{{{key-id}}}",
    "Condition": {
        "ArnLike": {
          "kms:EncryptionContext:aws:athena:arn": "arn:aws:athena:us-east-1:{{account-id}}:workgroup/*",
          "aws:SourceArn": "arn:aws:athena:us-east-1:{{account-id}}:workgroup/*"
        },
        "StringEquals": {
          "aws:SourceAccount": "{{account-id}}"
        }
    }
}
```

Athena および Amazon S3 のアクセス許可に加えて、`kms:GenerateDataKey` および `kms:Decrypt` アクションを実行するアクセス許可も取得する必要があります。詳細については、「[Amazon S3 の暗号化されたデータに対する許可](encryption.md#permissions-for-encrypting-and-decrypting-data)」を参照してください。

マネージドクエリ結果の暗号化の詳細については、[マネージドクエリ結果を暗号化する](encrypting-managed-results.md) を参照してください。