

# Athena for Spark でリクエスタによる Amazon S3 バケットの支払いを有効にする
<a name="notebooks-spark-requester-pays"></a>

Amazon S3 バケットをリクエスタが支払うように設定すると、クエリに関連するデータアクセス料金とデータ転送料金がクエリを実行したユーザーのアカウントに請求されます。詳細については、「*Amazon S3 ユーザーガイド*」の「[ストレージ転送と使用量のリクエスタ支払いバケットの使用](https://docs.aws.amazon.com/AmazonS3/latest/userguide/RequesterPaysBuckets.html)」を参照してください。

Athena for Spark では、リクエスタ支払いバケットがワークグループごとではなく、セッションごとに有効化されます。リクエスタ支払いバケットを有効にする大まかな手順は次のとおりです。

1. Amazon S3 コンソールで、バケットのプロパティに対するリクエスタによる支払いを有効にし、アクセスを指定するバケットポリシーを追加します。

1. IAM コンソールで、バケットへのアクセスを許可する IAM ポリシーを作成し、そのポリシーをリクエスタ支払いバケットへのアクセスに使用する IAM ロールにアタッチします。

1. Athena for Spark では、セッションプロパティを追加してリクエスタによる支払い機能を有効にします。

## ステップ 1: Amazon S3 バケットでリクエスタ支払いを有効にし、バケットポリシーを追加する
<a name="notebooks-spark-requester-pays-enable-requester-pays-on-an-amazon-s3-bucket"></a>

**Amazon S3 バケットのリクエスタ支払いを有効にするには**

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

1. バケットのリストで、リクエスタ支払いを有効にするバケットのリンクを選択します。

1. バケットのページで、**[プロパティ]** タブを選択します。

1. **[リクエスタ支払い]** セクションまで下にスクロールし、**[編集]** を選択します。

1. **[リクエスタ支払いを編集]**  ページで、**[有効化]** を選択し、**[変更の保存]** を選択します。

1. **[アクセス許可]** タブを選択します。

1. **[バケットポリシー]** セクションで、**[編集]** を選択します。

1. **[バケットポリシーを編集]** ページで、必要なバケットポリシーをソースバケットに適用します。以下のポリシー例では、すべての AWS プリンシパル (`"AWS": "*"`) へのアクセスを許可していますが、アクセスをより細かく設定することもできます。例えば、別のアカウントの特定の IAM ロールのみを指定したい場合があります。

------
#### [ JSON ]

****  

   ```
   { "Version":"2012-10-17",		 	 	  "Statement": [ { "Sid": "Statement1", "Effect": "Allow",
       "Principal": { "AWS": "arn:aws:iam::{{111122223333}}:root" },
       "Action": "s3:*", "Resource": [
           "arn:aws:s3:::{{111122223333}}-{{us-east-1}}-{{amzn-s3-demo-bucket}}",
           "arn:aws:s3:::{{555555555555}}-{{us-east-1}}-{{amzn-s3-demo-bucket}}/*"
       ] } ] }
   ```

------

## ステップ 2: IAM ポリシーを作成して、それを IAM ロールにアタッチします。
<a name="notebooks-spark-requester-pays-create-an-iam-policy-and-attach-it-to-an-iam-role"></a>

次に、バケットへのアクセスを許可する IAM ポリシーを作成します。次に、リクエスタ支払いバケットへのアクセスに使用されるロールにポリシーをアタッチします。

**リクエスタ支払いバケット用の IAM ポリシーを作成し、そのポリシーをロールにアタッチするには**

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

1. IAM コンソールのナビゲーションペインで、**[ポリシー]** を選択します。

1. [**Create policy**] を選択します。

1. **[JSON]** を選択します。

1. **[ポリシーエディタ]**  で、以下のポリシーを追加します。

------
#### [ JSON ]

****  

   ```
   { "Version":"2012-10-17",		 	 	  "Statement": [ { "Action": [ "s3:*" ], "Effect": "Allow",
       "Resource": [
           "arn:aws:s3:::{{111122223333}}-{{us-east-1}}-{{amzn-s3-demo-bucket}}",
           "arn:aws:s3:::{{111122223333}}-{{us-east-1}}-{{amzn-s3-demo-bucket}}/*"
       ] } ] }
   ```

------

1. [**次へ**] を選択します。

1. **[確認と作成]** ページで、ポリシーの 名前とオプションの説明を入力し、**[ポリシーの作成]** を選択します。

1. ナビゲーションペインで **[Roles]** (ロール) を選択してください。

1. **[ロール]** ページで、使用したいロールを見つけて、ロール名のリンクを選択します。

1. **[アクセス許可ポリシー]** で、**[アクセス許可を追加]** と **[ポリシーをアタッチ]** を続けて選択します。

1. **[その他の許可ポリシー]** セクションで、作成したポリシーのチェックボックスをオンにし、**[アクセス許可を追加]** を選択します。

## ステップ 3: Athena for Spark セッションプロパティを追加する
<a name="notebooks-spark-requester-pays-add-a-session-property"></a>

Amazon S3 バケットとリクエスタ支払いに関連するアクセス許可を設定した後、Athena for Spark セッションでこの機能を有効にできます。

**Athena for Spark セッションでリクエスタ支払いバケットを有効にするには**

1. ノートブックエディタで、右上の **[Session]** (セッション) メニューから **[Edit session]** (セッションの編集) を選択します。

1. **[Spark のプロパティ]** を拡張します。

1. **[JSON で編集]** を選択します。

1. JSON テキストエディタで、以下を入力します。

   ```
   {
     "spark.hadoop.fs.s3.useRequesterPaysHeader":"true"
   }
   ```

1. **[保存]** を選択します。