

# Amazon Athena CloudWatch Metrics コネクタ
<a name="connectors-cwmetrics"></a>

Amazon Athena CloudWatch メトリクスコネクタを使用すると、Amazon Athena は SQL を使用して CloudWatch メトリクスデータをクエリできます。

このコネクタは、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)」を参照してください。

## パラメータ
<a name="connectors-cwmetrics-parameters"></a>

このセクションのパラメータを使用して CloudWatch Metrics コネクタを設定します。

### AWS Glue Data Catalog フェデレーションコネクタ
<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 環境プロパティ**

次の Lambda 環境プロパティは、お客様のアカウントの Lambda 関数でコネクタを使用する場合にのみ適用されます。
+ **glue\_connection** – フェデレーションコネクタに関連付けられた Glue 接続の名前を指定します。

**注記**  
AWS Glue Data Catalog フェデレーション接続を使用するすべてのコネクタは、認証情報を保存するために AWS Secrets Manager を使用する必要があります。
AWS Glue Data Catalog フェデレーション接続を使用して作成された CloudWatch Metrics コネクタは、マルチプレックスハンドラーの使用をサポートしていません。
AWS Glue Data Catalog フェデレーション接続を使用して作成された CloudWatch Metrics コネクタは、`ConnectionSchemaVersion` 2 のみをサポートします。

### Athena データカタログフェデレーションコネクタ
<a name="connectors-cwmetrics-legacy"></a>
+ **spill\_bucket** – Lambda 関数の上限を超えたデータに対して、Amazon S3 バケットを指定します。
+ **spill\_prefix** – (オプション) 指定された `athena-federation-spill` という `spill_bucket` の、デフォルトのサブフォルダに設定します。このロケーションで、Amazon S3 の[ストレージライフサイクル](https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-lifecycle-mgmt.html)を設定し、あらかじめ決められた日数または時間数以上経過したスピルを削除することをお勧めします。
+ **spill\_put\_request\_headers** – (オプション) スピリングに使用されるAmazon S3 の `putObject` リクエスト (例:`{"x-amz-server-side-encryption" : "AES256"}`) に関する、 JSON でエンコードされたリクエストヘッダーと値のマッピング。利用可能な他のヘッダーについては、「Amazon Simple Storage Service API リファレンス」の「[PutObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html)」を参照してください。
+ **kms\_key\_id** – (オプション) デフォルトでは、Amazon S3 に送信されるすべてのデータは、AES-GCM で認証された暗号化モードとランダムに生成されたキーを使用して暗号化されます。KMS が生成したより強力な暗号化キー (例えば `a7e63k4b-8loc-40db-a2a1-4d0en2cd8331`) を Lambda 関数に使用させる場合は、KMS キー ID を指定します。
+ **disable\_spill\_encryption** – (オプション) `True` に設定されている場合、スピルに対する暗号化を無効にします。デフォルト値は `False` です。この場合、S3 にスピルされたデータは、AES-GCM を使用して (ランダムに生成されたキー、または KMS により生成したキーにより) 暗号化されます。スピル暗号化を無効にすると、特にスピルされる先で[サーバー側の暗号化](https://docs.aws.amazon.com/AmazonS3/latest/userguide/serv-side-encryption.html)を使用している場合に、パフォーマンスが向上します。

コネクタでは、CloudWatch から [Amazon Athena クエリフェデレーション SDK](https://github.com/awslabs/aws-athena-query-federation/tree/master/athena-federation-sdk) の `ThrottlingInvoker` コンストラクトを介してスロットリングされるイベントの処理用として、[AIMD の輻輳 (ふくそう) 制御](https://en.wikipedia.org/wiki/Additive_increase/multiplicative_decrease) もサポートしています。以下のオプションの環境変数のいずれかを設定することで、デフォルトのスロットリング動作を微調整できます。
+ **throttle\_initial\_delay\_ms** – 最初の輻輳イベントの後に適用される最初の呼び出し遅延。デフォルト値は 10 ミリ秒です。
+ **throttle\_max\_delay\_ms** – 呼び出し間の最大遅延。これを 1000 ミリ秒で除算することで、TPS を算出できます。デフォルト値は 1000 ミリ秒です。
+ **throttle\_decrease\_factor** – Athena が呼び出しのレートを低減する要因。デフォルトは 0.5 です。
+ **throttle\_increase\_ms** – Athena がコール遅延を低減させた際のレート。デフォルト値は 10 ミリ秒です。

## データベースとテーブル
<a name="connectors-cwmetrics-databases-and-tables"></a>

Athena CloudWatch Metrics コネクタは、名前空間、ディメンション、メトリクス、およびメトリクスの値を、`default` という単一のスキーマ内で 2 つのテーブルにマッピングします。

### メトリクステーブル
<a name="connectors-cwmetrics-the-metrics-table"></a>

`metrics` テーブルは、名前空間、セット、名前の組み合わせによって一意に定義された、使用可能なメトリクスで構成されています。この `metrics` テーブルには次の列が含まれます。
+ **namespacee** – `VARCHAR` は名前空間を含みます。
+ **metric\_name** – `VARCHAR` はメトリクス名を含みます。
+ **ディメンション** – `dim_name (VARCHAR)` および `dim_value (VARCHAR)` から構成される `STRUCT` オブジェクトの `LIST`。
+ **statistic** – メトリクスで使用が可能な、`VARCH` 統計情報の `LIST` (例: `p90`、`AVERAGE`、...)。

### metric\_samples テーブル
<a name="connectors-cwmetrics-the-metric_samples-table"></a>

`metric_samples` テーブルには、`metrics` テーブルで使用可能な各メトリクスのサンプルが含まれています。この `metric_samples` テーブルには次の列が含まれます。
+ **namespace** – 名前空間が含まれている `VARCHAR`。
+ **metric\_name** – メトリクス名が含まれている `VARCHAR`。
+ **ディメンション** – `dim_name (VARCHAR)` および `dim_value (VARCHAR)` から構成される `STRUCT` オブジェクトの `LIST`。
+ **dim\_name** – 単一のディメンション名により簡単にフィルタリングできる、`VARCHAR` のコンビニエンスフィールド。
+ **dim\_value** – 単一のディメンション値により簡単にフィルタリングできる、`VARCHAR` のコンビニエンスフィールド。
+ **period** – メトリクスの「期間」を、秒単位 (60 秒間メトリクスなど) で表す `INT` フィールド。
+ **timestamp** – メトリクスがサンプリングを行うエポックタイムを、秒単位で表す `BIGINT` フィールド。
+ **value** – サンプルされた値を含む `FLOAT8` フィールド。
+ **statistic** – サンプル値の統計タイプ (例: `AVERAGE`、`p90`) が含まれている `VARCHAR` 。

## 必要な許可
<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 クエリが終了した際に fast-fail を実行します。
+ **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 ライセンス](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)を参照してください。