

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

# Amazon Athena CloudWatch Metrics 連接器
<a name="connectors-cwmetrics"></a>

Amazon Athena CloudWatch Metrics 連接器讓 Amazon Athena 能夠使用 SQL 來查詢 CloudWatch Metrics 資料。

此連接器不會使用 Glue 連線來集中 Glue 中的組態屬性。連線組態是透過 Lambda 完成的。

如需將查詢指標從 Athena 本身發佈至 CloudWatch 的相關資訊，請參閱 [使用 CloudWatch 和 EventBridge 來監控查詢和控制成本](workgroups-control-limits.md)。

## 先決條件
<a name="connectors-cwmetrics-prerequisites"></a>
+ 使用 Athena 主控台或 AWS Serverless Application Repository，將連接器部署到您的 AWS 帳戶 。如需詳細資訊，請參閱 [建立資料來源連線](connect-to-a-data-source.md) 或 [使用 AWS Serverless Application Repository 部署資料來源連接器](connect-data-source-serverless-app-repo.md) 。

## Parameters
<a name="connectors-cwmetrics-parameters"></a>

使用本節中的參數來設定 CloudWatch Metrics 連接器。

### Glue 連線 (建議)
<a name="connectors-cwmetrics-gc"></a>

我們建議您使用 Glue 連線物件來設定 CloudWatch Metrics 連接器。為此，請將 CloudWatch Metrics 連接器 Lambda 的 `glue_connection` 環境變數設定為要使用的 Glue 連線名稱。

**Glue 連線屬性**

使用下列命令來取得 Glue 連線物件的結構描述。此結構描述包含可用於控制連線的所有參數。

```
aws glue describe-connection-type --connection-type CLOUDWATCHMETRICS
```

**Lambda 環境屬性**
+ **glue\$1connection** – 指定與聯合連接器關聯的 Glue 連線名稱。

**注意**  
使用 Glue 連線的所有連接器都必須使用 AWS Secrets Manager 來存放登入資料。
使用 Glue 連線建立的 CloudWatch Metrics 連接器不支援使用多工處理常式。
使用 Glue 連線建立的 CloudWatch Metrics 連接器僅支援 `ConnectionSchemaVersion` 2。

### 舊版連線
<a name="connectors-cwmetrics-legacy"></a>
+ **spill\$1bucket** - 針對超過 Lambda 函數限制的資料，指定 Amazon S3 儲存貯體。
+ **spill\$1prefix** - (選用) 預設為指定的 `spill_bucket` 中名為 `athena-federation-spill` 的子資料夾。我們建議您在此位置設定 Amazon S3 [儲存生命週期](https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-lifecycle-mgmt.html)，以刪除超過預定天數或小時數的溢出。
+ **spill\$1put\$1request\$1headers** – (選用) 用於溢出的 Amazon S3 `putObject` 請求的請求標頭和值的 JSON 編碼映射 (例如，`{"x-amz-server-side-encryption" : "AES256"}`)。如需其他可能的標頭，請參閱《Amazon Simple Storage Service API 參考**》中的 [PutObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html)。
+ **kms\$1key\$1id** - (選用) 依預設，任何溢出到 Amazon S3 的資料都會使用 AES-GCM 驗證加密模式和隨機產生的金鑰進行加密。為了讓您的 Lambda 函數使用 KMS 產生的更強大的加密金鑰，例如 `a7e63k4b-8loc-40db-a2a1-4d0en2cd8331`，您可以指定 KMS 金鑰 ID。
+ **disable\$1spill\$1encryption** - (選用) 當設定為 `True` 時，停用溢出加密。預設為 `False`，因此溢出 S3 的資料會使用 AES-GCM 進行加密 — 使用隨機產生的金鑰或 KMS 來產生金鑰。停用溢出加密可以提高效能，尤其是如果溢出位置使用[伺服器端加密](https://docs.aws.amazon.com/AmazonS3/latest/userguide/serv-side-encryption.html)。

連接器也支援 [AIMD 擁塞控制](https://en.wikipedia.org/wiki/Additive_increase/multiplicative_decrease)，以透過 [Amazon Athena Query Federation 軟體開發套件](https://github.com/awslabs/aws-athena-query-federation/tree/master/athena-federation-sdk) `ThrottlingInvoker` 構造來處理來自 CloudWatch 的限流事件。您可以透過設定下列任何選用的環境變數來調整預設限流行為：
+ **throttle\$1initial\$1delay\$1ms** - 在第一個擁塞事件之後套用的初始呼叫延遲。預設值為 10 毫秒。
+ **throttle\$1max\$1delay\$1ms** - 呼叫之間的最大延遲。您可以透過將其分成 1000 毫秒來衍生 TPS。預設值為 1000 毫秒。
+ **throttle\$1decrease\$1factor** - Athena 降低呼叫速率的係數。預設值為 0.5
+ **throttle\$1increase\$1ms**— Athena 降低呼叫延遲的速率。預設值為 10 毫秒。

## 資料庫和資料表
<a name="connectors-cwmetrics-databases-and-tables"></a>

Athena CloudWatch Metrics 連接器會將您的命名空間、維度、指標和指標值映射到名為 `default` 的單一結構描述中的兩個資料表。

### 指標資料表
<a name="connectors-cwmetrics-the-metrics-table"></a>

`metrics` 資料表包含由命名空間、集合和名稱組合唯一定義的可用指標。`metrics` 資料表包含以下資料欄。
+ **namespace** - 包含命名空間的 `VARCHAR`。
+ **metric\$1name** - 包含指標名稱的 `VARCHAR`。
+ **dimensions** - `STRUCT` 物件的 `LIST`，由 `dim_name (VARCHAR)` 和 `dim_value (VARCHAR)` 組成。
+ **statistic** - `VARCH` 統計資料的 `LIST` (例如，`p90`、`AVERAGE` ...)，可供指標使用。

### metric\$1samples 資料表
<a name="connectors-cwmetrics-the-metric_samples-table"></a>

`metric_samples` 資料表包含 `metrics` 資料表中每個指標的可用指標範例。`metric_samples` 資料表包含以下資料欄。
+ **namespace** - 包含命名空間的 `VARCHAR`。
+ **metric\$1name** - 包含指標名稱的 `VARCHAR`。
+ **dimensions** - `STRUCT` 物件的 `LIST`，由 `dim_name (VARCHAR)` 和 `dim_value (VARCHAR)` 組成。
+ **dim\$1name**— 一個 `VARCHAR` 方便欄位，可用於輕鬆篩選單個維度名稱。
+ **dim\$1value**— 一個 `VARCHAR` 方便欄位，可用於輕鬆篩選單個維度值。
+ **period** - 一個表示指標「時段」的 `INT` 欄位 (以秒為單位) (例如，60 秒指標)。
+ **timestamp** - 表示指標範例所用 epoch 時間的 `BIGINT` 欄位 (以秒為單位)。
+ **value** - 包含範例值的 `FLOAT8` 欄位。
+ **statistic** - 包含範例統計類型的 `VARCHAR` (例如，`AVERAGE` 或者 `p90`)。

## 所需的許可
<a name="connectors-cwmetrics-required-permissions"></a>

如需詳細了解此連接器所需的 IAM 政策，請檢閱 [athena-cloudwatch-metrics.yaml](https://github.com/awslabs/aws-athena-query-federation/blob/master/athena-cloudwatch-metrics/athena-cloudwatch-metrics.yaml) 檔案的 `Policies` 部分。以下清單摘要說明所需的許可。
+ **Amazon S3 寫入存取** - 連接器需要 Amazon S3 中某個位置的寫入存取權，以便從大型查詢中溢寫結果。
+ **Athena GetQueryExecution** - 當上游 Athena 查詢終止時，連接器會使用此許可快速失敗。
+ **CloudWatch Metrics ReadOnly** - 連接器會使用此權限來查詢您的指標資料。
+ **CloudWatch Logs Write** - 連接器使用此存取權來寫入其診斷日誌。

## 效能
<a name="connectors-cwmetrics-performance"></a>

Athena CloudWatch Metrics 連接器透過並行掃描査詢所需的日誌串流，嘗試依據 CloudWatch Metrics 來最佳化查詢。對於特定時段、指標、命名空間和維度篩選條件，會在 Lambda 函數和 CloudWatch Logs 中執行述詞下推。

## 授權資訊
<a name="connectors-cwmetrics-license-information"></a>

Amazon Athena CloudWatch Metrics 連接器專案是依據 [Apache-2.0 License](https://www.apache.org/licenses/LICENSE-2.0.html) 來授權的。

## 其他資源
<a name="connectors-cwmetrics-additional-resources"></a>

如需此連接器的其他資訊，請造訪 GitHub.com 上的[相應網站](https://github.com/awslabs/aws-athena-query-federation/tree/master/athena-cloudwatch-metrics)。