

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 啟用請求者支付 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 角色的 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. 開啟位於 [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/) 的 Amazon 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. 前往 [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/) 開啟 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. 在導覽窗格中，選擇**角色**。

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. 選擇**儲存**。