

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

# 使用工作群組來控制查詢存取和成本
<a name="workgroups-manage-queries-control-costs"></a>

您可以使用 Athena 工作群組來分隔工作負載、控制團隊存取權、強制執行組態，以及追蹤查詢指標和控制成本。

**分隔工作負載**  
您可以使用工作群組來分隔工作負載。例如，您可以建立兩個獨立工作群組，一個用於自動排定的應用程式，例如產生報告，另一個供分析師臨時使用。

**控制團隊存取權**  
因為工作群組扮演 IAM 資源的角色，所以您可以使用資源層級的身分型政策，控制可存取工作群組並在其中執行查詢的人員。若要隔離組織中兩個不同團隊的查詢，您可以為每個團隊建立單獨的工作群組。每個工作群組都有其自己的查詢歷史記錄以及該工作群組中的查詢的易儲存查詢的清單，而不是針對帳戶中的所有查詢。如需詳細資訊，請參閱[使用 IAM 政策來控制工作群組存取](workgroups-iam-policy.md)。

**強制執行組態**  
您可以選擇性地對該工作群組中執行的所有查詢強制執行相同的工作群組整體設定。這些設定包含 Amazon S3 中查詢結果的位置、預期的儲存貯體擁有者、加密和對寫入查詢結果儲存貯體之物件的控制。如需詳細資訊，請參閱[Override client-side settings (覆寫用戶端設定)](workgroups-settings-override.md)。

**追蹤查詢指標、查詢事件和控制成本**  
若要追蹤每個 Athena 工作群組的查詢指標、查詢事件和控制成本，您可以使用下列功能：
+ **發布查詢指標** – 將工作群組的查詢指標發布至 CloudWatch。在 Athena 主控台中，您可以檢視每個工作群組的查詢指標。在 CloudWatch 中，您可以建立自訂儀表板，並針對這些指標設定閾值和警示。如需詳細資訊，請參閱[在 Athena 中啟用 CloudWatch 查詢指標](athena-cloudwatch-metrics-enable.md)及[使用 CloudWatch 監控 Athena 查詢指標](query-metrics-viewing.md)。
+ **監控 Athena 用量指標** – 透過在 CloudWatch 圖表和儀表板上顯示您目前的服務用量，了解您的帳戶如何使用資源。如需詳細資訊，請參閱[使用 CloudWatch 監控 Athena 用量指標](monitoring-athena-usage-metrics.md)
+ **監控查詢事件** – 使用 Amazon EventBridge 來接收查詢狀態的即時通知。如需詳細資訊，請參閱[使用 EventBridge 監控 Athena 查詢事件](athena-events.md)。
+ **建立資料用量控制** – 在 Athena 中，您可以設定每一查詢和每一工作群組資料用量控制。Athena 會在超過指定閾值時取消查詢，或在超過工作群組閾值時啟用 Amazon SNS 警示。如需詳細資訊，請參閱[設定每一查詢和每一工作群組資料用量控制](workgroups-setting-control-limits-cloudwatch.md)。
+ **使用成本分配標籤** – 使用帳單和成本管理主控台為工作群組加上成本分配標籤。與工作群組中執行查詢相關聯的成本會在成本和用量報告中顯示，並具有相應的成本分配標籤。如需詳細資訊，請參閱《AWS Billing 使用者指南**》中的[使用使用者定義的成本分配標籤](https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/custom-tags.html)。
+ **使用容量保留** – 您可以使用指定的資料處理單位數目來建立容量保留，並將一或多個工作群組新增至保留。如需詳細資訊，請參閱[管理查詢處理容量](capacity-management.md)。

如需有關使用 Athena 工作群組分隔工作負載、控制使用者存取和管理查詢用量和成本的其他資訊，請參閱 AWS 大數據部落格文章[使用 Amazon Athena 工作群組分隔查詢和管理成本](https://aws.amazon.com/blogs/big-data/separating-queries-and-managing-costs-using-amazon-athena-workgroups/)。

**注意**  
Amazon Athena 資源現可在 Amazon SageMaker Unified Studio (預覽版) 內進行存取，如此可協助您存取組織的資料，並使用最佳工具對其採取行動。您可以將儲存的查詢從 Athena 工作群組移轉至 SageMaker Unified Studio 專案、使用現有的 Athena 工作群組設定專案，以及透過 IAM 角色更新維護必要許可。如需詳細資訊，請參閱[將 Amazon Athena 資源移轉至 Amazon SageMaker Unified Studio (預覽版)](https://github.com/aws/Unified-Studio-for-Amazon-Sagemaker/tree/main/migration/athena)。

## 考量和限制
<a name="workgroups-considerations-limitations"></a>

當您在 Athena 中使用工作群組時，請謹記以下幾點：
+ 每個帳戶都有一個主要工作群組。在預設情況下，如果您尚未建立任何工作群組，則您帳戶中的所有查詢會在主要工作群組中執行。無法刪除主要工作群組。預設許可允許所有已驗證身分的使用者存取該工作群組。
+ 當您能夠存取工作群組時，您可以檢視工作群組的設定、指標和資料用量控制限制。利用額外的許可，您可以編輯設定和資料用量控制限制。
+ 當您執行查詢時，它們會在目前工作群組中執行。您可以在主控台中，透過 API 操作、命令列介面或使用 JDBC 或 ODBC 驅動器的用戶端應用程式，在工作群組的內容中執行查詢。
+ 在 Athena 主控台查詢編輯器中，每個工作群組最多可開啟十個查詢索引標籤。在工作群組之間切換時，您的查詢索引標籤最多可以在三個工作群組中保持開啟。
+  AWS 區域 您帳戶中的每個 最多可建立 1000 個工作群組。
+ 工作群組可以停用。停用工作群組會阻止查詢在該工作群組中執行，直到您重新啟用該工作群組。
+ 如果您嘗試刪除包含已儲存查詢的工作群組，Athena 會向您發出警告。在您刪除其他使用者可存取的工作群組之前，請確保其可以存取能夠讓他們用於執行查詢的其他工作群組。

**Topics**
+ [考量和限制](#workgroups-considerations-limitations)
+ [建立工作群組](creating-workgroups.md)
+ [受管工作群組](workgroups-create-update-delete.md)
+ [使用 CloudWatch 和 EventBridge 來監控查詢](workgroups-control-limits.md)
+ [使用 Athena 工作群組 API](workgroups-api-list.md)
+ [對工作群組進行疑難排解](workgroups-troubleshooting.md)

# 建立工作群組
<a name="creating-workgroups"></a>

建立工作群組需要有執行 `CreateWorkgroup` API 動作的許可。請參閱 [設定存取工作群組和標籤](workgroups-access.md) 和 [使用 IAM 政策來控制工作群組存取](workgroups-iam-policy.md)。如果您新增標籤，您也需要將許可新增到 `TagResource`。請參閱 [工作群組的標籤政策範例](tags-access-control.md#tag-policy-examples-workgroups)。

下列程序說明如何使用 Athena 主控台來建立工作群組。若要使用 Athena API 建立工作群組，請參閱 [CreateWorkGroup](https://docs.aws.amazon.com/athena/latest/APIReference/API_CreateWorkGroup.html)。

**在 Athena 主控台中建立工作群組**

1.  決定建立哪些工作群組。要考量的幾個關鍵因素包括：
   + 誰可以在每個工作群組中執行查詢，以及誰擁有工作群組的組態。使用 IAM 政策來強制執行工作群組許可。如需詳細資訊，請參閱[使用 IAM 政策來控制工作群組存取](workgroups-iam-policy.md)。
   + Amazon S3 中用於存放工作群組查詢結果的位置。工作群組的所有使用者必須能夠存取這個位置。
   + 工作群組查詢結果是否必須加密。由於加密是按工作群組 (而不是按查詢) 進行的，因此您應該為加密和非加密的查詢結果建立單獨的工作群組。如需詳細資訊，請參閱[加密 Amazon S3 中存放的 Athena 查詢結果](encrypting-query-results-stored-in-s3.md)。

1. 如果未顯示主控台的導覽窗格，請選擇左側的展開選單。  
![\[選擇展開選單。\]](http://docs.aws.amazon.com/zh_tw/athena/latest/ug/images/nav-pane-expansion.png)

1. 在 Athena 主控台導覽窗格中，選擇 **Workgroups** (工作群組)。

1. 在 **Workgroups** (工作群組) 頁面中，請選擇 **Create workgroup** (建立工作群組)。

1. 在 **Create workgroup** (建立工作群組) 頁面上，如下所示填寫欄位：    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/athena/latest/ug/creating-workgroups.html)

1. 選擇**建立工作群組**。工作群組會出現在 **Workgroups** (工作群組) 頁面上的清單。

   在查詢編輯器中，Athena 會在位於主控台右上角的**工作群組**選項中顯示目前工作群組。您可以使用此選項來切換工作群組。當您執行查詢時，它們會在目前工作群組中執行。

1. 建立 IAM 政策以允許使用者、群組或角色存取工作群組。政策建立工作群組成員資格和在 `workgroup` 資源上的動作存取權。如需詳細資訊，請參閱[使用 IAM 政策來控制工作群組存取](workgroups-iam-policy.md)。如需 JSON 政策的範例，請參閱[設定存取工作群組和標籤](workgroups-access.md)。

1. (選用) 當覆寫用戶端設定選項不會強制執行工作群組整體加密時，在 Amazon S3 中對該工作群組的所有查詢結果設定最低層級的加密。您可以使用此功能，確保查詢結果絕不會儲存在處於未加密狀態的 Amazon S3 儲存貯體中。如需詳細資訊，請參閱[為工作群組設定最低加密](workgroups-minimum-encryption.md)。

1. (選用) 使用 Amazon CloudWatch 和 Amazon EventBridge 來監控工作群組的查詢和控制成本。如需詳細資訊，請參閱[使用 CloudWatch 和 EventBridge 來監控查詢和控制成本](workgroups-control-limits.md)。

1. (選用) 使用帳單和成本管理主控台為工作群組加上成本分配標籤。如需詳細資訊，請參閱《AWS Billing 使用者指南**》中的[使用使用者定義的成本分配標籤](https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/custom-tags.html)。

1. (選用) 若要取得工作群組中查詢的專用處理容量，請將該工作群組新增至容量保留。您可以將一或多個工作群組指派給預留。如需詳細資訊，請參閱[管理查詢處理容量](capacity-management.md)。

# Override client-side settings (覆寫用戶端設定)
<a name="workgroups-settings-override"></a>

當您建立或編輯工作群組時，您可以選擇**覆寫用戶端設定**選項。預設不會選取此選項。視您是否選取它而定，Athena 的行為如下：
+ 如果未選取**覆寫用戶端設定**，則不會在用戶端層級強制工作群組設定。當未為工作群組選取覆寫用戶端設定選項時，Athena 將對工作群組中執行的所有查詢使用用戶端的設定，包括查詢結果位置、預期的儲存貯體擁有者、加密和對寫入查詢結果儲存貯體之物件的控制等的設定。每個使用者可以在主控台的**設定**選單中指定其自己的設定。如果不設定用戶端設定，則會套用工作群組整體設定。如果您使用 AWS CLI、 API 動作或 JDBC 和 ODBC 驅動程式，在不覆寫用戶端設定的工作群組中執行查詢，您的查詢會使用您在查詢中指定的設定。
+ 如果選取**覆寫用戶端設定**，則會在工作群組層級強制工作群組中所有用戶端執行工作群組設定。當為工作群組選取覆寫用戶端設定選項時，Athena 將對工作群組中執行的所有查詢使用工作群組的設定，包括查詢結果位置、預期的儲存貯體擁有者、加密和對寫入查詢結果儲存貯體之物件的控制等的設定。當您使用主控台、API 動作或 JDBC 或 ODBC 驅動程式時，工作群組設定會覆寫您為查詢指定的任何用戶端設定。將工作群組設定設定為覆寫用戶端設定之後，可以省略驅動器或 API 中的用戶端設定。

  如果您覆寫使用者端設定，則您或任何工作群組使用者下次開啟 Athena 主控台時，Athena 會向您告知此工作群組中的查詢使用工作群組的設定，並提示您確認此變更。
**注意**  
由於覆寫用戶端設定可能會中斷根據任意 Amazon S3 儲存貯體中結果可用性的自訂自動化，我們建議您在覆寫之前先通知使用者。
**重要**  
如果您使用 API 動作 AWS CLI、 或 JDBC 和 ODBC 驅動程式在覆寫用戶端設定的工作群組中執行查詢，請確定您省略查詢中的用戶端設定，或更新它們以符合工作群組的設定。  
如果您在查詢中指定用戶端設定，但在覆寫設定的工作群組中執行這些設定，則將會使用工作群組設定執行查詢。如需有關檢視工作群組設定的資訊，請參閱 [檢視工作群組的詳細資訊](viewing-details-workgroups.md)。

# 受管工作群組
<a name="workgroups-create-update-delete"></a>

在 [https://console.aws.amazon.com/athena/](https://console.aws.amazon.com/athena/home) 的 Athena 主控台中，您可以執行下列任務：




| 陳述式 | Description | 
| --- | --- | 
|  [建立工作群組](creating-workgroups.md)  |  建立新的工作群組。  | 
| [檢視工作群組的詳細資訊](viewing-details-workgroups.md) | 檢視工作群組的詳細資訊，例如其名稱、描述、資料用量限制、查詢結果的位置、預期查詢結果儲存貯體擁有者、加密和對寫入查詢結果儲存貯體之物件的控制。如果已勾選 Override client-side settings (覆寫用戶端設定)，您也可以驗證此工作群組是否強制其設定。 | 
|  [指定查詢的工作群組](specify-wkgroup-to-athena-in-which-to-run-queries.md)  |  您必須向 Athena 指定要使用的工作群組，才能執行查詢。您必須具有此工作群組的許可。  | 
|  [切換工作群組](switching-workgroups.md)  |  在您可以存取的工作群組之間切換。  | 
|  [編輯工作群組](editing-workgroups.md)  | 編輯工作群組和變更其設定。您無法變更工作群組的名稱，但可以使用相同的設定和不同的名稱來建立新的工作群組。 | 
|  [啟用或停用工作群組](workgroups-enabled-disabled.md)  |  啟用或停用工作群組。當工作群組停用時，其使用者無法執行查詢，或建立新的具名查詢。如果您可以存取此工作群組，則您仍可以檢視指標、資料用量限制控制、工作群組的設定、查詢歷史記錄和儲存的查詢。  | 
|  [在工作群組之間複製儲存的查詢](copy-a-query-between-workgroups.md)  | 在工作群組之間複製儲存的查詢。例如，如果您在預覽工作群組中建立了查詢，並且想要在非預覽工作群組中使用該查詢，則您可能需要執行此操作。 | 
|  [刪除工作群組](deleting-workgroups.md)  |  刪除工作群組。如果您刪除工作群組，將會刪除查詢歷史記錄、儲存的查詢、工作群組的設定和每一查詢資料限制控制。CloudWatch 中會保留工作群組整體的資料限制控制，您可以個別刪除它們。 無法刪除主要工作群組。  | 
| [使用 IAM 政策來控制工作群組存取](workgroups-iam-policy.md) | 使用 IAM 政策來控制工作群組存取權。如需工作群組政策的範例，請參閱 [工作群組政策範例](example-policies-workgroup.md)。 | 
| [建立使用 IAM Identity Center 身分驗證的 Athena 工作群組](workgroups-identity-center.md) | 若要將 IAM Identity Center 身分與 Athena 搭配使用，您必須建立啟用 IAM Identity Center 的工作群組。建立工作群組後，您可以使用 IAM Identity Center 主控台或 API，將 IAM Identity Center 使用者或群組指派給工作群組。 | 
| [為工作群組設定最低加密](workgroups-minimum-encryption.md) | 在 Amazon S3 對工作群組的所有查詢結果強制執行最低層級的加密。使用此功能，確保查詢結果絕不會儲存在處於未加密狀態的 Amazon S3 儲存貯體中。 | 

# 檢視工作群組的詳細資訊
<a name="viewing-details-workgroups"></a>

對於每個工作群組，您可以查看其詳細資訊。詳細資訊包括工作群組的名稱、描述、已啟用或停用，以及工作群組中執行的查詢所使用的設定，其中包括查詢結果的位置、預期的儲存貯體擁有者、加密和對寫入查詢結果儲存貯體之物件的控制。如果工作群組有資料用量限額，則也會顯示。

**若要檢視工作群組的詳細資訊**

1. 在 Athena 主控台導覽窗格中，選擇 **Workgroups** (工作群組)。

1. 在 **Workgroups** (工作群組) 頁面上，請選擇您要檢視的工作群組連結。工作群組的 **Overview Details** (概觀詳細資料) 頁面隨即會顯示。

# 指定查詢的工作群組
<a name="specify-wkgroup-to-athena-in-which-to-run-queries"></a>

若要指定使用的工作群組，您必須具有此工作群組的許可。

**指定工作群組使用**

1. 請確認您的許可允許您在您想要使用在工作群組中執行查詢。如需詳細資訊，請參閱[使用 IAM 政策來控制工作群組存取](workgroups-iam-policy.md)。

1.  若要指定工作群組，請使用以下其中一個選項：
   + 如果您正在使用 Athena 主控台，請[切換工作群組](switching-workgroups.md)來設定工作群組。
   + 如果您是使用 Athena API 操作，請在 API 動作中指定工作群組名稱。例如，您可以在 [StartQueryExecution](https://docs.aws.amazon.com/athena/latest/APIReference/API_StartQueryExecution.html) 中設定工作群組名稱，如下所示：

     ```
     StartQueryExecutionRequest startQueryExecutionRequest = new StartQueryExecutionRequest()
                   .withQueryString(ExampleConstants.ATHENA_SAMPLE_QUERY)
                   .withQueryExecutionContext(queryExecutionContext)
                   .withWorkGroup(WorkgroupName)
     ```
   + 如果您是使用 JDBC 或 ODBC 驅動程式，請在連線字串中使用 `Workgroup` 組態參數來設定工作群組名稱。驅動程式會將工作群組名稱傳遞給 Athena。在連線字串中指定工作群組參數，如下列範例所示：

     ```
     jdbc:awsathena://AwsRegion=<AWSREGION>;UID=<ACCESSKEY>;
     PWD=<SECRETKEY>;S3OutputLocation=s3://amzn-s3-demo-bucket/<athena-output>-<AWSREGION>/;
     Workgroup=<WORKGROUPNAME>;
     ```

# 切換工作群組
<a name="switching-workgroups"></a>

如果您對兩個工作群組都有許可，您可以從其中一個切換到另一個。

在每個工作群組內，您最多可以開啟十個查詢索引標籤。在工作群組之間切換時，您的查詢索引標籤最多可以在三個工作群組中保持開啟。

**切換工作群組**

1. 在 Athena 主控台中，使用右上角的 **Workgroup** (工作群組) 選項選擇工作群組。

1. 如果**工作群組 *workgroup-name* 設定**對話方塊出現時，請選擇 **Acknowledge** (確認)。

**Workgroup** (工作群組) 選項會顯示您已切換到其中的工作群組名稱。您現在可以在此工作群組中執行查詢。

# 編輯工作群組
<a name="editing-workgroups"></a>

編輯工作群組需要有執行 `UpdateWorkgroup` API 操作的許可。請參閱 [設定存取工作群組和標籤](workgroups-access.md) 和 [使用 IAM 政策來控制工作群組存取](workgroups-iam-policy.md)。如果您新增或編輯標籤，您也需要有 `TagResource` 的許可。請參閱 [工作群組的標籤政策範例](tags-access-control.md#tag-policy-examples-workgroups)。

**在主控台編輯工作群組**

1. 在 Athena 主控台導覽窗格中，選擇 **Workgroups** (工作群組)。

1. 在 **Workgroups** (工作群組) 頁面上，選取您要編輯的工作群組的按鈕。

1. 選擇 **Actions** (動作)、**Edit** (編輯)。

1. 請依需求變更欄位。關於欄位清單，請參閱[建立工作群組](creating-workgroups.md)。工作群組的名稱除外，您可以變更所有欄位。如果您需要變更名稱，請使用新的名稱和相同的設定建立另一個工作群組。

1. 選擇**儲存變更**。更新的工作群組會出現在 **Workgroups** (工作群組) 頁面上的清單。

# 啟用或停用工作群組
<a name="workgroups-enabled-disabled"></a>

如果您有許可這樣做，您可以在主控台、使用 API 操作或透過 JDBC 和 ODBC 驅動程式來啟用或停用工作群組。

**若要啟用或停用工作群組**

1. 在 Athena 主控台導覽窗格中，選擇 **Workgroups** (工作群組)。

1. 在 **Workgroups** (工作群組) 頁面上，請選擇工作群組的連結。

1. 在右上角，選擇 **Enable workgroup** (啟用工作群組) 或 **Disable workgroup** (停用工作群組)。

1. 在確認提示時，選擇 **Enable** (啟用) 或 **Disable** (停用)。如果您停用工作群組，則其使用者無法在其中執行查詢，或建立新的具名查詢。如果您啟用工作群組，使用者可以使用它來執行查詢。

# 在工作群組之間複製儲存的查詢
<a name="copy-a-query-between-workgroups"></a>

Athena 主控台目前沒有將儲存的查詢從某個工作群組直接複製到另一個工作群組的選項，但您可以使用下列程序手動執行相同的任務。

**若要在工作群組之間複製儲存的查詢**

1. 在 Athena 主控台中，從您想要從中複製查詢的工作群組中，選擇 **Saved queries** (儲存的查詢) 索引標籤。

1. 選擇您想要複製的已儲存查詢連結。Athena 會在查詢編輯器中開啟查詢。

1. 在查詢編輯器中，選取查詢文字，然後按下 **Ctrl\$1C** 以進行複製。

1. [切換](switching-workgroups.md)至目的地工作群組，或[建立工作群組](creating-workgroups.md)，然後切換至該工作群組。

1. 在查詢編輯器中開啟新索引標籤，然後按下 **Ctrl\$1V** 將文字貼到新索引標籤中。

1. 在查詢編輯器中，選擇 **Save as** (另存為)，將查詢儲存在目的地工作群組中。

1. 在 **Choose a name** (選擇名稱) 對話方塊中，輸入查詢的名稱和選擇性描述。

1. 選擇**儲存**。

# 刪除工作群組
<a name="deleting-workgroups"></a>

如果您有許可刪除工作群組，您可以這樣做。無法刪除主要工作群組。

如有許可，您可以隨時刪除空的工作群組。您也可以刪除包含儲存的查詢的工作群組。在這種情況下，在繼續刪除工作群組之前，Athena 會警告將刪除儲存的查詢。

如果您刪除自己所在的工作群組，主控台將焦點切換到主要工作群組。如果您有它的存取權，則可以執行查詢和檢視其設定。

如果您刪除工作群組，則其設定和每一查詢資料限制控制也會刪除。CloudWatch 中會保留工作群組整體的資料限制控制，您可以視需要刪除它們。

**重要**  
在刪除工作群組之前，請確定其使用者也屬於能夠讓他們繼續執行查詢的其他工作群組。如果使用者的 IAM 政策*僅*允許他們在此工作群組中執行查詢，而且您刪除此工作群組，則他們再也沒有許可來執行查詢。如需詳細資訊，請參閱[Example policy for running queries in the primary workgroup](example-policies-workgroup.md#example4-run-in-primary-access)。

**在主控台刪除工作群組**

1. 在 Athena 主控台導覽窗格中，選擇 **Workgroups** (工作群組)。

1. 在 **Workgroups** (工作群組) 頁面上，選取您要刪除的工作群組的按鈕。

1. 選擇 **動作**、**刪除**。

1. 在 **Delete workgroup** (刪除工作群組) 確認提示中，輸入工作群組的名稱，然後選擇 **Delete** (刪除)。

若要使用 API 操作來刪除工作群組，請使用 `DeleteWorkGroup` 動作。

# 使用 CloudWatch 和 EventBridge 來監控查詢和控制成本
<a name="workgroups-control-limits"></a>

工作群組可讓您設定每一查詢或每一工作群組的資料用量控制限制，設定超過這些限制時的警示，以及將查詢指標發布至 CloudWatch。

在每個工作群組中，您可以：
+ 設定每一查詢和每一工作群組的 **Data usage controls (資料用量控制)**，並建立當查詢超出閾值時將採取的動作。
+ 檢視和分析查詢指標，並將其發布至 CloudWatch。如果您在主控台中建立工作群組，則系統會為您選取將指標發布至 CloudWatch 的設定。如果您使用 API 操作，您必須[啟用發布指標](athena-cloudwatch-metrics-enable.md)。發布指標時，其會顯示在 **Workgroups** (工作群組) 面板中的 **Metrics** (指標) 索引標籤。對於主要工作群組，預設會停用指標。

## 影片
<a name="athena-cloudwatch-metrics-video"></a>

下列影片說明如何在 CloudWatch 中建立自訂儀表板，以及設定指標的警示和觸發。您可以直接從 Athena 主控台使用預先填入的儀表板，以使用這些查詢指標。

[![AWS Videos](http://img.youtube.com/vi/https://www.youtube.com/embed/x1V_lhkdKCg/0.jpg)](http://www.youtube.com/watch?v=https://www.youtube.com/embed/x1V_lhkdKCg)


**Topics**
+ [影片](#athena-cloudwatch-metrics-video)
+ [啟用查詢指標](athena-cloudwatch-metrics-enable.md)
+ [使用 CloudWatch 監控查詢指標](query-metrics-viewing.md)
+ [使用 CloudWatch 監控用量指標](monitoring-athena-usage-metrics.md)
+ [使用 EventBridge 監控查詢事件](athena-events.md)
+ [設定資料用量控制](workgroups-setting-control-limits-cloudwatch.md)

# 在 Athena 中啟用 CloudWatch 查詢指標
<a name="athena-cloudwatch-metrics-enable"></a>

當您在主控台中建立工作群組時，系統預設會選取將查詢指標發布至 CloudWatch 的設定。

**若要在 Athena 主控台中啟用或停用工作群組的查詢指標**

1. 前往 [https://console.aws.amazon.com/athena/](https://console.aws.amazon.com/athena/home) 開啟 Athena 主控台。

1. 如果未顯示主控台的導覽窗格，請選擇左側的展開選單。  
![\[選擇展開選單。\]](http://docs.aws.amazon.com/zh_tw/athena/latest/ug/images/nav-pane-expansion.png)

1. 在導覽窗格中，選擇 **Workgroups** (工作群組)。

1. 選擇您想要修改的工作群組連結。

1. 在工作群組的詳細資訊頁面上，選擇 **Edit** (編輯)。

1. 在**設定**區段中，選取或清除將**查詢指標發佈至 AWS CloudWatch**。

如果您使用 API 操作、命令列界面或具有 JDBC 驅動程式的用戶端應用程式來建立工作群組，啟用查詢指標的發布，請在 [WorkGroupConfiguration](https://docs.aws.amazon.com/athena/latest/APIReference/API_WorkGroupConfiguration.html) 中將 `PublishCloudWatchMetricsEnabled` 設定為 `true`。以下範例只顯示指標組態，而省略其他組態：

```
"WorkGroupConfiguration": { 
      "PublishCloudWatchMetricsEnabled": "true"
     ....
     }
```

# 使用 CloudWatch 監控 Athena 查詢指標
<a name="query-metrics-viewing"></a>

當已選取 [publish query metrics to CloudWatch](athena-cloudwatch-metrics-enable.md) (將查詢指標發布至 CloudWatch) 選項時，Athena 會將查詢相關指標發布至 Amazon CloudWatch。您可以建立自訂儀表板，在 CloudWatch 中設定指標的警示和觸發，或直接從 Athena 主控台使用預先填入的儀表板。

當您為工作群組中的查詢啟用查詢指標時，Athena 主控台中每個工作群組的指標會顯示在 **Workgroups** (工作群組) 面板中的 **Metrics** (指標) 索引標籤中。

Athena 會將以下指標發布至 CloudWatch 主控台：
+ `DPUAllocated` – 在容量保留中佈建的用於執行查詢的 DPU (資料處理單位) 總數。
+ `DPUConsumed` – 在指定的時間，容量保留中處於 `RUNNING` 狀態的查詢主動使用的 DPU 數目。僅當工作群組與容量保留相關聯，並包含與保留關聯的所有工作群組時，才會發出指標。
+ `DPUCount` – 查詢使用的 DPU 數目上限，僅當查詢完成時發布一次。
+ `EngineExecutionTime` – 執行查詢所花費的毫秒數。
+ `ProcessedBytes` – Athena 在每次 DML 查詢所掃描的位元組。
+ `QueryPlanningTime` – Athena 規劃查詢處理流程所花費的毫秒數。
+ `QueryQueueTime` – 查詢在查詢佇列中等待資源的毫秒數。
+ `ServicePreProcessingTime` – 提交查詢至查詢引擎之前，Athena 預先處理查詢所花費的毫秒數。
+ `ServiceProcessingTime` – 查詢引擎完成查詢的執行後，Athena 處理查詢結果所花費的毫秒數。
+ `TotalExecutionTime` – Athena 執行 DDL 或 DML 查詢所花費的毫秒數。

如需更完整的描述，請參閱本文件稍後的 [Athena 的 CloudWatch 指標和維度清單](#athena-cloudwatch-metrics-table)。

這些指標具有下列維度：
+ `CapacityReservation`– 用於執行查詢的容量保留名稱 (如果適用)。
+ `QueryState` – `SUCCEEDED`、`FAILED` 或 `CANCELED`
+ `QueryType` – `DML`、`DDL` 或 `UTILITY`
+ `WorkGroup` – 工作群組的名稱

Athena 會將以下指標發布至 `AmazonAthenaForApacheSpark` 命名空間下的 CloudWatch 主控台：
+ `DPUCount` – 工作階段期間用來執行計算所消耗的 DPU 數目。

該指標具有下列兩個維度：
+ `SessionId` – 要提交計算的工作階段 ID。
+ `WorkGroup` – 工作群組的名稱。

如需詳細資訊，請參閱本主題稍後的[Athena 的 CloudWatch 指標和維度清單](#athena-cloudwatch-metrics-table)。如需有關 Athena 用量指標的資訊，請參閱[使用 CloudWatch 監控 Athena 用量指標](monitoring-athena-usage-metrics.md)。

您可以在 Athena 主控台或 CloudWatch 主控台中檢視查詢指標。

## 在 Athena 主控台中檢視查詢指標
<a name="query-metrics-viewing-athena-console"></a>

**在 Athena 主控台中檢視工作群組的查詢指標**

1. 前往 [https://console.aws.amazon.com/athena/](https://console.aws.amazon.com/athena/home) 開啟 Athena 主控台。

1. 如果未顯示主控台的導覽窗格，請選擇左側的展開選單。  
![\[選擇展開選單。\]](http://docs.aws.amazon.com/zh_tw/athena/latest/ug/images/nav-pane-expansion.png)

1. 在導覽窗格中，選擇 **Workgroups** (工作群組)。

1. 從清單中選擇所需的工作群組，然後選擇 **Metrics** (指標) 索引標籤。

   指標儀表板隨即顯示。
**注意**  
如果您最近剛啟用工作群組的指標，且/或最近沒有任何查詢活動，儀表板上的圖形可能會是空白的狀態。系統會根據您在下一個步驟中指定的間隔，從 CloudWatch 擷取查詢活動。

1. 在 **Metrics** (指標) 區段中，選擇 Athena 應用來從 CloudWatch 擷取查詢指標的指標間隔，或指定自訂間隔。  
![\[指定 Athena 主控台中工作群組的指標擷取間隔。\]](http://docs.aws.amazon.com/zh_tw/athena/latest/ug/images/wg-custom-interval.png)

1. 若要重新整理顯示的指標，請選擇重新整理圖示。  
![\[選擇重新整理圖示。\]](http://docs.aws.amazon.com/zh_tw/athena/latest/ug/images/wg-refresh-metrics.png)

1. 按一下重新整理圖示旁的箭頭，以選擇您希望指標顯示的更新頻率。  
![\[選擇 Athena 主控台中工作群組指標顯示的重新整理間隔。\]](http://docs.aws.amazon.com/zh_tw/athena/latest/ug/images/wg-choose-refresh-interval.png)

## 在 CloudWatch 主控台中檢視查詢指標
<a name="query-metrics-viewing-cw-console"></a>

**若要在 Amazon CloudWatch 主控台中檢視指標**

1. 透過 [https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch/) 開啟 CloudWatch 主控台。

1. 在導覽窗格中，選擇 **Metrics** (指標)、**All metrics** (所有指標)。

1. 選取 **AWS/Athena** 命名空間。

## 使用 檢視查詢指標 AWS CLI
<a name="query-metrics-viewing-cli"></a>

**使用 檢視指標 AWS CLI**
+ 執行以下任意一項：
  + 若要列出 Athena 的指標，請開啟命令提示，然後使用下列命令：

    ```
    aws cloudwatch list-metrics --namespace "AWS/Athena"
    ```
  + 若要列出所有可用的指標，請使用以下命令：

    ```
    aws cloudwatch list-metrics"
    ```

## Athena 的 CloudWatch 指標和維度清單
<a name="athena-cloudwatch-metrics-table"></a>

如果您已在 Athena 中啟用 CloudWatch 指標，其會按照工作群組將以下指標傳送到 CloudWatch。下列指標使用 `AWS/Athena` 命名空間。


| 指標名稱 | Description | 
| --- | --- | 
| DPUAllocated |  在容量保留中佈建的用於執行查詢的 DPU (資料處理單位) 總數。  | 
| DPUConsumed | 在給定的時間，保留區中處於 RUNNING 狀態的查詢主動使用的 DPU 數目。僅當工作群組與容量保留相關聯並包含與保留關聯的所有工作群組時，才會發出這個指標。如果您將工作群組從一個保留區移至另一個保留區，則該指標會包含該工作群組屬於第一個保留區時的資料。如需有關容量保留的詳細資訊，請參閱 [管理查詢處理容量](capacity-management.md)。 | 
| DPUCount | 查詢使用的 DPU 數目上限，僅當查詢完成時發布一次。只有附加至容量保留的工作群組才會發出此指標。 | 
| EngineExecutionTime |  查詢執行所花費的毫秒數。  | 
| ProcessedBytes |  Athena 在每次 DML 查詢所掃描的位元組。對於取消的查詢 (無論是由使用者取消，或達到上限時自動取消)，這包括取消前掃描的資料量。DDL 查詢不會報告此指標。  | 
| QueryPlanningTime | Athena 規劃查詢處理流程所花費的毫秒數。這包括從資料來源擷取資料表分割區所花費的時間。請注意，因為查詢引擎會執行查詢規劃，所以查詢規劃時間是 EngineExecutionTime 的子集。 | 
| QueryQueueTime | 查詢在查詢佇列中等待資源的毫秒數。請注意，如果發生暫時性錯誤，查詢可能自動加回到佇列。 | 
| ServicePreProcessingTime | 提交查詢至查詢引擎之前，Athena 預先處理查詢所花費的毫秒數。 | 
| ServiceProcessingTime | 查詢引擎完成查詢的執行後，Athena 處理查詢結果所花費的毫秒數。 | 
| TotalExecutionTime | Athena 執行 DDL 或 DML 查詢所花費的毫秒數。TotalExecutionTime 包括 QueryQueueTime、QueryPlanningTime、EngineExecutionTime 和 ServiceProcessingTime。 | 

Athena 的這些指標具有下列維度。


| 維度 | Description | 
| --- | --- | 
| CapacityReservation |  用於執行查詢的容量保留名稱 (如果適用)。當未使用容量保留時，此維度不會傳回任何資料。  | 
| QueryState |  查詢狀態。 有效的統計資訊：已成功、已失敗、已取消。  | 
| QueryType |  查詢類型。 有效的統計資訊：`DDL`、`DML` 或 `UTILITY`。執行的查詢陳述式類型。`DDL` 表示 DDL (資料定義語言) 查詢陳述式。`DML` 表示 DML (資料處理語言) 查詢陳述式，例如 `CREATE TABLE AS SELECT`。`UTILITY` 表示除 DDL 和 DML 以外的查詢陳述式，例如 `SHOW CREATE TABLE` 或 `DESCRIBE TABLE`。  | 
| WorkGroup |  工作群組的名稱。  | 

# 使用 CloudWatch 監控 Athena 用量指標
<a name="monitoring-athena-usage-metrics"></a>

您可使用 CloudWatch 用量指標，透過在 CloudWatch 圖表和儀表板中顯示目前的服務使用量狀況，瞭解您的帳戶如何使用資源。

對於 Athena，用量可用性指標對應至 Athena AWS 服務 的配額。您可以設定警示，在您的用量接近服務配額時發出警示。如需有關 Athena 服務配額的詳細資訊，請參閱[Service Quotas](service-limits.md)。如需 AWS 用量指標的詳細資訊，請參閱《*Amazon CloudWatch 使用者指南*》中的[AWS 用量指標](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch-Service-Quota-Integration.html)。

Athena 在 `AWS/Usage` 命名空間中發布下列指標。


|  指標名稱  |  Description  | 
| --- | --- | 
|  `ResourceCount`  |   AWS 區域 每個帳戶所有佇列和執行查詢的總和，依查詢類型 (DML 或 DDL) 分隔。此指標唯一實用的統計資料是「上限」。 此指標每分鐘定期發布一次。如果您沒有執行任何查詢，則指標不會報告任何內容 (甚至不會報告 0)。僅當採用指標時正在執行啟用查詢時，指標才會發布。  | 

下列維度用於強化 Athena 所發布的用量指標。


|  維度  |  Description  | 
| --- | --- | 
|  `Service`  |   AWS 服務 包含資源的 名稱。對 Athena 而言，此維度的數值為 `Athena`。  | 
|  `Resource`  |  正在執行的資源類型。Athena 查詢用量的資源值為 `ActiveQueryCount`。  | 
|  `Type`  |  正在報告的實體類型。目前，Athena 用量指標的唯一有效值為 `Resource`。  | 
|  `Class`  |  正在追蹤的資源類別。對 Athena 而言，`Class` 可以是 `DML` 或 `DDL`。  | 

## 在 CloudWatch 主控台中檢視 Athena 資源用量指標
<a name="monitoring-athena-usage-metrics-cw-console"></a>

您可以使用 CloudWatch 主控台查看 Athena 用量指標圖表，並設定警示在用量接近服務配額時提醒您。

**檢視 Athena 資源用量指標**

1. 透過 [https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch/) 開啟 CloudWatch 主控台。

1. 在導覽窗格中，選擇 **Metrics** (指標)、**All metrics** (所有指標)。

1. 選擇**用量**，然後選擇**依據 AWS 資源**。

   服務配額用量指標清單隨即出現。

1. 選取 **Athena** 和 **ActiveQueryCount** 旁的核取方塊。

1. 選擇 **Graphed metrics (圖表化指標)** 標籤。

   上圖顯示資源的目前用量 AWS 。

如需了解如何將服務配額新增至圖表，以及設定警示，讓系統在用量接近服務配額時通知您，請參閱*《Amazon CloudWatch 使用者指南》*中[視覺化您的服務配額和設定警示](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch-Quotas-Visualize-Alarms.html)。如需設定每個工作群組用量限制的詳細資訊，請參閱 [設定每一查詢和每一工作群組資料用量控制](workgroups-setting-control-limits-cloudwatch.md)。

# 使用 EventBridge 監控 Athena 查詢事件
<a name="athena-events"></a>

您可以搭配使用 Amazon EventBridge 與 Amazon Athena，以接收有關查詢狀態的即時通知。當您提交的查詢轉換狀態時，Athena 會將事件發布至 EventBridge，當中包含該查詢狀態轉換的相關資訊。您可以針對感興趣的事件撰寫簡單的規則，並在事件符合規則時採取自動化動作。例如，您可以建立規則，在查詢達到終端狀態時叫用 AWS Lambda 函數。盡可能發出事件。

在您為 Athena 建立事件規則之前，請執行下列動作：
+ 熟悉 Eventbridge 中的事件、規則和目標。如需詳細資訊，請參閱[什麼是 Amazon EventBridge？](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-what-is.html) 如需有關如何設定規則的詳細資訊，請參閱 [Amazon EventBridge 入門](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-get-started.html)。
+ 建立要在事件規則中使用的一或多個目標。

**注意**  
Athena 目前提供一種事件類型 (Athena 查詢狀態變更)，但可能會新增其他事件類型和詳細資訊。如果您是透過程式設計方式將事件 JSON 資料還原序列化，請確定您的應用程式在新增這些額外屬性時已準備好處理不明屬性。

## Athena 事件格式
<a name="athena-events-pattern"></a>

以下是 Amazon Athena 事件的基本模式。

```
{
    "source":[
        "aws.athena"
    ],
    "detail-type":[
        "Athena Query State Change"
    ],
    "detail":{
        "currentState":[
            "SUCCEEDED"
        ]
    }
}
```

## Athena 查詢狀態變更事件
<a name="athena-events-athena-query-state-change"></a>

下列範例會顯示 `currentState` 值為 `SUCCEEDED` 的 Athena 狀態變更事件。

```
{
    "version":"0",
    "id":"abcdef00-1234-5678-9abc-def012345678",
    "detail-type":"Athena Query State Change",
    "source":"aws.athena",
    "account":"123456789012",
    "time":"2019-10-06T09:30:10Z",
    "region":"us-east-1",
    "resources":[

    ],
    "detail":{
        "versionId":"0",
        "currentState":"SUCCEEDED",
        "previousState":"RUNNING",
        "statementType":"DDL",
        "queryExecutionId":"01234567-0123-0123-0123-012345678901",
        "workgroupName":"primary",
        "sequenceNumber":"3"
    }
}
```

下列範例會顯示 `currentState` 值為 `FAILED` 的 Athena 狀態變更事件。只有在 `currentState` 為 `FAILED` 時，才會顯示 `athenaError` 區塊。如需有關 `errorCategory` 和 `errorType` 值的詳細資訊，請參閱 [Athena 錯誤目錄](error-reference.md)。

```
{
    "version":"0",
    "id":"abcdef00-1234-5678-9abc-def012345678",
    "detail-type":"Athena Query State Change",
    "source":"aws.athena",
    "account":"123456789012",
    "time":"2019-10-06T09:30:10Z",
    "region":"us-east-1",
    "resources":[ 
    ],
    "detail":{
        "athenaError": {
            "errorCategory": 2.0, //Value depends on nature of exception
            "errorType": 1306.0, //Type depends on nature of exception
            "errorMessage": "Amazon S3 bucket not found", //Message depends on nature of exception
            "retryable":false //Retryable value depends on nature of exception
        },
        "versionId":"0",
        "currentState": "FAILED",
        "previousState": "RUNNING",
        "statementType":"DML",
        "queryExecutionId":"01234567-0123-0123-0123-012345678901",
        "workgroupName":"primary",
        "sequenceNumber":"3"
    }
}
```

### 輸出屬性
<a name="athena-events-query-state-change-output-properties"></a>

JSON 輸出包含以下屬性。


****  

| 屬性 | Description | 
| --- | --- | 
| athenaError | 只有在 currentState 為 FAILED 時才會顯示。包含發生之錯誤的相關資訊，包括錯誤類別、錯誤類型、錯誤訊息，以及是否可以重試導致錯誤的動作。每個欄位的值視錯誤性質而定。如需有關 errorCategory 和 errorType 值的詳細資訊，請參閱 [Athena 錯誤目錄](error-reference.md)。 | 
| versionId | 詳細資訊物件之結構描述的版本號碼。 | 
| currentState | 在事件發生時查詢所轉換成的狀態。 | 
| previousState | 在事件發生時查詢從其轉換的狀態。 | 
| statementType | 執行的查詢陳述式類型。 | 
| queryExecutionId | 查詢執行的唯一識別碼。 | 
| workgroupName | 執行查詢的工作群組名稱。 | 
| sequenceNumber | 單調遞增的數字，允許刪除重複和排序涉及所執行單一查詢的傳入事件。當針對相同的狀態轉換發布重複事件時，sequenceNumber 值是相同的。當查詢經歷一次以上的狀態轉換時 (例如遇到鮮少列入佇列的查詢)，您可以使用 sequenceNumber 來排序 currentState 和 previousState 值相同的事件。 | 

## 範例
<a name="athena-events-examples"></a>

下列範例會將事件發布至您已訂閱的 Amazon SNS 主題。查詢 Athena 時，您會收到一封電子郵件。該範例假設 Amazon SNS 主題存在且您已訂閱該主題。

**若要將 Athena 事件發布至 Amazon SNS 主題**

1. 建立 Amazon SNS 主題的目標。授予 EventBridge 事件服務主體發布至 Amazon SNS 主題的 `events.amazonaws.com` 許可，如下列範例所示。

   ```
   {
       "Effect":"Allow",
       "Principal":{
           "Service":"events.amazonaws.com"
       },
       "Action":"sns:Publish",
       "Resource":"arn:aws:sns:us-east-1:111111111111:your-sns-topic"
   }
   ```

1. 使用 AWS CLI `events put-rule`命令來建立 Athena 事件的規則，如下列範例所示。

   ```
   aws events put-rule --name {ruleName} --event-pattern '{"source": ["aws.athena"]}'
   ```

1. 使用 AWS CLI `events put-targets`命令將 Amazon SNS 主題目標連接至規則，如下列範例所示。

   ```
   aws events put-targets --rule {ruleName} --targets Id=1,Arn=arn:aws:sns:us-east-1:111111111111:your-sns-topic
   ```

1. 查詢 Athena 並觀察被叫用的目標。您應該會收到來自該 Amazon SNS 主題的相應電子郵件。

## AWS 使用者通知 搭配 Amazon Athena 使用
<a name="monitoring-user-notifications"></a>

您可使用 [AWS 使用者通知](https://docs.aws.amazon.com/notifications/latest/userguide/what-is.html) 來設定交付管道，以取得有關 Amazon Athena 事件的通知。當事件符合您指定的規則時，便會收到通知。您可以透過多個管道接收事件通知，包括電子郵件、[聊天應用程式中的 Amazon Q Developer](https://docs.aws.amazon.com/chatbot/latest/adminguide/what-is.html) 聊天通知或 [AWS Console Mobile Application](https://docs.aws.amazon.com/consolemobileapp/latest/userguide/what-is-consolemobileapp.html) 推送通知。您也可以在[主控台通知中心](https://console.aws.amazon.com/notifications/)查看通知。 使用者通知 支援彙總，這可以減少您在特定事件期間收到的通知數量。

如需詳細資訊，請參閱[「*AWS 使用者通知 使用者指南」*](https://docs.aws.amazon.com/notifications/latest/userguide/what-is.html)。

# 設定每一查詢和每一工作群組資料用量控制
<a name="workgroups-setting-control-limits-cloudwatch"></a>

 Athena 可讓您設定兩種類型的成本控制：每一查詢限制和每一工作群組限制。對於每個工作群組，您只能設定一個每一查詢限制和多個每一工作群組限制。
+ **每一查詢控制限制**指定每次查詢所掃描的資料總量。如果工作群組中執行的任何查詢超過此限制，則會取消。您在工作群組中只能建立一個每一查詢控制限制，它會套用到其中執行的每個查詢。如果您需要變更限制，請編輯限制。如需詳細步驟，請參閱[建立每一查詢資料用量控制](#configure-control-limit-per-query)。
+ **工作群組整體資料用量控制限制**指定在指定期間內針對此工作群組中執行的所有查詢所掃描的資料總量。您可以為每一工作群組建立多個限制。工作群組整體查詢限制可讓您針對工作群組中執行的查詢所掃描的資料，在每小時或每日彙總上設定多個閾值。

  如果掃描的資料總量超過閾值，您可以將通知推送至 Amazon SNS 主題。若要這麼做，請在 Athena 主控台中設定 Amazon SNS 警示和動作，以便在超過限制時通知管理員。如需詳細步驟，請參閱[建立每一工作群組資料用量控制](#configure-control-limit-per-workgroup)。對於 Athena 從 CloudWatch 主控台發布的任何指標，您也可以建立警示和動作。例如，您可以對失敗的查詢次數設定提醒。如果次數超過特定閾值，這個提醒可以觸發將電子郵件寄給管理員。如果超過限制，將會有動作將 Amazon SNS 警示通知傳送給指定的使用者。

  您可以採取的其他動作：
  + 調用 Lambda 函數。如需詳細資訊，請參閱《Amazon Simple Notification Service 開發人員指南》**中的[使用 Amazon SNS 通知叫用 Lambda 函數](https://docs.aws.amazon.com/sns/latest/dg/sns-lambda-as-subscriber.html)。
  + 停用工作群組，以停止執行任何進一步的查詢。如需這些步驟，請參閱 [啟用或停用工作群組](workgroups-enabled-disabled.md)。

每一查詢限制和每一工作群組限制彼此獨立。每當超過任一限制時就會採取指定的動作。如果兩個或更多使用者在同一個工作群組中同時執行查詢，則可能每個查詢都不超過任何指定的限制，但掃描的資料總數超過每一工作群組的資料用量限制。在這種情況下，Amazon SNS 警示會傳送給使用者。

## 建立每一查詢資料用量控制
<a name="create-a-per-query-data-usage-control"></a><a name="configure-control-limit-per-query"></a>

**建立每一查詢資料用量控制**

每一查詢控制限制指定每次查詢所掃描的資料總量。如果工作群組中執行的任何查詢超過此限制，則會取消。已取消的查詢會按照 [Amazon Athena 定價](https://aws.amazon.com/athena/pricing/)計費。
**注意**  
如果是已取消或失敗的查詢，Athena 可能已將局部結果寫入 Amazon S3。在這種情況下，Athena 不會從存放結果的 Amazon S3 字首中刪除這些局部結果。您必須移除含有局部結果的 Amazon S3 字首。Athena 使用 Amazon S3 分段上傳，將資料寫入 Amazon S3。我們建議您設定儲存貯體生命週期政策，指定當查詢失敗時結束分段上傳。如需詳細資訊，請參閱《Amazon Simple Storage Service 使用者指南》**中的[使用儲存貯體生命週期政策中止未完成的分段上傳](https://docs.aws.amazon.com/AmazonS3/latest/userguide/mpuoverview.html#mpu-abort-incomplete-mpu-lifecycle-config)。
在某些情況下，Athena 可能會自動重試查詢執行。在大多數情況下，這些查詢能夠成功完成，且查詢 ID 會標記為 `Completed`。這些查詢可能在初始嘗試期間已寫入部分結果，並可能產生未完成的分段上傳。

您在工作群組中只能建立一個每一查詢控制限制，它會套用到其中執行的每個查詢。如果您需要變更限制，請編輯限制。

1. 前往 [https://console.aws.amazon.com/athena/](https://console.aws.amazon.com/athena/home) 開啟 Athena 主控台。

1. 在導覽窗格中，選擇 **Workgroups** (工作群組)。

1. 從清單中選擇工作群組名稱。

1. 在**執行控制項**索引標籤上，選擇**編輯控制項**。

1. 編輯**資料掃描限制**的值。
   + 指定介於 10 MB （最小值） 和 7 EB （最大值） 之間的值。
   + 從下拉式清單中選取單位值 （例如 **Kilobytes KB** 或 **Exabytes EB**)。
**注意**  
預設動作是在查詢超過限制時取消查詢。此設定無法變更。

1. 選擇**儲存**以立即套用您的變更。

## 建立或編輯每一工作群組資料用量提醒
<a name="create-a-per-workgroup-data-usage-alert"></a><a name="configure-control-limit-per-workgroup"></a>

**建立或編輯每一工作群組資料用量提醒**

當工作群組中執行的查詢在特定時段內掃描指定數量的資料時，您可以設定多個提醒閾值。提醒會透過 Amazon CloudWatch 警示實作，並套用於工作群組中的所有查詢。達到閾值後，您可以讓 Amazon SNS 向您指定的使用者傳送電子郵件。達到閾值時，查詢作業不會自動取消。

1. 前往 [https://console.aws.amazon.com/athena/](https://console.aws.amazon.com/athena/home) 開啟 Athena 主控台。

1. 如果未顯示主控台的導覽窗格，請選擇左側的展開選單。

1. 在導覽窗格中，選擇 **Workgroups** (工作群組)。

1. 從清單中選擇工作群組名稱。

1. 選擇 **Edit** (編輯) 以編輯工作群組的設定。

1. 向下捲動到並展開 **Workgroup data usage alerts - optional** (工作群組資料用量提醒 - 選用)。

1. 選擇 **Add alert** (新增提醒)。

1. 針對 **Data usage threshold configuration** (資料用量閾值組態)，指定值，如下所示：
   + 針對 **Data threshold** (資料閾值)，指定數字，然後從下拉式清單中選取單位值。
   + 對於 **Time period** (期間)，請從下拉式清單中選擇期間。
   + 針對 **SNS topic selection** (SNS 主題選擇)，請從下拉式清單中選擇 Amazon SNS 主題。或者，選擇 **Create SNS topic** (建立 SNS 主題)，直接前往 [Amazon SNS 主控台](https://console.aws.amazon.com/sns/v2/home)，建立 Amazon SNS 主題，並為 Athena 帳戶中的其中一個使用者設定主題訂閱。如需詳細資訊，請參閱《Amazon Simple Notification Service 開發人員指南》**中的 [Amazon SNS 入門](https://docs.aws.amazon.com/sns/latest/dg/sns-getting-started.html)。

1. 如果您正在建立新提醒，請選擇 **Add alert** (新增提醒)，或選擇 **Save** (儲存) 來儲存現有提醒。

# 使用 Athena 工作群組 API
<a name="workgroups-api-list"></a>

以下是一些用於 Athena 工作群組的 REST API 操作。在以下所有操作中 (`ListWorkGroups` 除外)，您必須指定工作群組。在其他操作中，例如 `StartQueryExecution`，工作群組參數是選擇性，此處未列出這些操作。如需操作的完整清單，請參閱 [Amazon Athena API 參考](https://docs.aws.amazon.com/athena/latest/APIReference/)。
+  [CreateWorkGroup](https://docs.aws.amazon.com/athena/latest/APIReference/API_CreateWorkGroup.html) 
+  [DeleteWorkGroup](https://docs.aws.amazon.com/athena/latest/APIReference/API_DeleteWorkGroup.html) 
+  [GetWorkGroup](https://docs.aws.amazon.com/athena/latest/APIReference/API_GetWorkGroup.html) 
+  [ListWorkGroups](https://docs.aws.amazon.com/athena/latest/APIReference/API_ListWorkGroups.html) 
+  [UpdateWorkGroup](https://docs.aws.amazon.com/athena/latest/APIReference/API_UpdateWorkGroup.html) 



# 對工作群組錯誤進行疑難排解
<a name="workgroups-troubleshooting"></a>

使用以下秘訣進行工作群組疑難排解。
+ 檢查您的帳戶中個別使用者的許可。他們必須有權存取查詢結果的位置，以及您們想要在其中執行查詢的工作群組。如果他們想要切換工作群組，則還需要有這兩個工作群組的許可。如需相關資訊，請參閱[使用 IAM 政策來控制工作群組存取](workgroups-iam-policy.md)。
+ 請注意 Athena 主控台中的內容，了解您將在哪個工作群組中執行查詢。如果您使用驅動程式，請務必設定為您需要的工作群組。如需相關資訊，請參閱[指定查詢的工作群組](specify-wkgroup-to-athena-in-which-to-run-queries.md)。
+ 如果您使用 API 或驅動程式來執行查詢，您必須使用其中一種方式指定查詢結果位置：對於個別的查詢，使用 [OutputLocation](https://docs.aws.amazon.com/athena/latest/APIReference/API_ResultConfiguration.html#athena-Type-ResultConfiguration-OutputLocation) (用戶端)。在工作群組中，使用 [WorkGroupConfiguration](https://docs.aws.amazon.com/athena/latest/APIReference/API_WorkGroupConfiguration.html)。如果未以任何方式指定位置，Athena 會在查詢執行期時發出錯誤。
+ 如果您以工作群組設定覆寫用戶端設定，您可能會遇到查詢結果位置方面的錯誤。例如，工作群組的使用者可能沒有許可，無法在 Amazon S3 中的工作群組位置存放查詢結果。在這種情況下，請新增必要的許可。
+ 工作群組會對 API 操作的行為造成改變。您帳戶中的使用者在 IAM 中，對工作群組需要有以資源為基礎的許可，才能在這些工作群組中呼叫以下現有的 API 操作。如果沒有工作群組和工作群組動作的許可，下列 API 動作會擲出 `AccessDeniedException`：**CreateNamedQuery**、**DeleteNamedQuery**、**GetNamedQuery**、**ListNamedQueries**、**StartQueryExecution**、**StopQueryExecution**、**ListQueryExecutions**、**GetQueryExecution**、**GetQueryResults** 和 **GetQueryResultsStream** (此 API 動作只適用於驅動器，不公開為公有使用)。如需詳細資訊，請參閱《服務授權參考》**中的 [Amazon Athena 的動作、資源和條件索引鍵](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonathena.html)。

  只有針對在使用者可存取的工作群組中執行的查詢，呼叫 **BatchGetQueryExecution** 和 **BatchGetNamedQuery** API 操作才會傳回查詢的相關資訊。如果使用者無法存取此工作群組，這些 API 操作會在未處理的 ID 清單中傳回未經授權的查詢 ID。如需詳細資訊，請參閱[使用 Athena 工作群組 API](workgroups-api-list.md)。
+ 如果執行查詢的工作群組已設定有[強制的查詢結果位置](workgroups-settings-override.md)，請勿為 CTAS 查詢指定 `external_location`。在這種情況下，Athena 會發出錯誤，且指定 `external_location` 的查詢會失敗。例如，如果您覆寫用戶端的查詢結果位置設定，而強制工作群組使用其自己的位置，此查詢會失敗：`CREATE TABLE <DB>.<TABLE1> WITH (format='Parquet', external_location='s3://amzn-s3-demo-bucket/test/') AS SELECT * FROM <DB>.<TABLE2> LIMIT 10;`

您可能會看到下列錯誤。下表列出工作群組的一些相關錯誤和建議的解決方案。


**工作群組錯誤**  

| 錯誤 | 發生時情況... | 
| --- | --- | 
|  查詢狀態為 CANCELED (已取消)。超出掃描的位元組限制。 | 查詢達到每一查詢資料限制，並且被取消。請考慮重寫查詢，以讀取較少的資料，或聯絡您的帳戶管理員。 | 
|  使用者 arn:aws:iam::123456789012:user/abc 無權對資源 arn:aws:athena:us-east-1:123456789012:workgroup/workgroupname 執行 athena:StartQueryExecution  | 使用者在工作群組中執行查詢，但沒有它的存取權。更新您的政策以提供此工作群組的存取權。 | 
|  INVALID\$1INPUT。工作群組 <name> 已停用。 | 使用者在工作群組中執行查詢，但此工作群組已停用。管理員可能停用您的工作群組。也可能是您沒有它的存取權。在這兩種情況下，請聯絡有權修改工作群組的管理員。 | 
|  INVALID\$1INPUT。找不到工作群組 <name>。 | 使用者在工作群組中執行查詢，但此工作群組不存在。如果已刪除工作群組，則可能發生此情況。切換到另一個工作群組來執行您的查詢。 | 
|  InvalidRequestException：呼叫 StartQueryExecution 操作時：未提供輸出位置。需要透過工作群組結果組態設定或作為 API 輸入來提供輸出位置。 |  使用者以 API 執行查詢，但未指定查詢結果的位置。您必須使用兩種方式之一來設定查詢結果的輸出位置：對於個別的查詢，使用 [OutputLocation](https://docs.aws.amazon.com/athena/latest/APIReference/API_ResultConfiguration.html#athena-Type-ResultConfiguration-OutputLocation) (用戶端)，或在工作群組中，使用 [WorkGroupConfiguration](https://docs.aws.amazon.com/athena/latest/APIReference/API_WorkGroupConfiguration.html)。  | 
|   Create Table As Select 查詢失敗，因為該查詢已使用 'external\$1location' 屬性提交至 Athena 工作群組，而該工作群組會針對所有查詢強制執行集中輸出位置。請移除 'external\$1location' 屬性，然後重新提交查詢。  | 如果執行查詢的工作群組已設定[強制的查詢結果位置](workgroups-settings-override.md)，而且您為 CTAS 查詢指定 external\$1location。在這種情況下，請移除 external\$1location 並重新執行查詢。 | 
| 無法建立預備陳述式 prepared\$1statement\$1name。此工作群組中的預備陳述式數目超過 1000 的上限。 | 工作群組包含的預備陳述式超過 1000 的上限。若要解決此問題，請使用 [DEALLOCATE PREPARE](sql-deallocate-prepare.md) 以從工作群組中移除一或多個預備陳述式。或者，建立新的工作群組。 | 