

# Amazon Athena AWS CMDB コネクタ
<a name="connectors-cmdb"></a>

Amazon Athena AWS CMDB コネクタは、Amazon Athena と AWS のさまざまなサービスとの通信を可能にし、それらに対し SQL によりクエリできるようにします。

このコネクタは、Glue データカタログにフェデレーティッドカタログとして登録できます。Lake Formation で定義されたデータアクセスコントロールを、カタログ、データベース、テーブル、列、行、タグレベルでサポートします。このコネクタは、Glue 接続を使用して Glue の設定プロパティを一元管理しています。

## 前提条件
<a name="connectors-cmdb-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-cmdb-parameters"></a>

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

### Glue 接続 (推奨)
<a name="connectors-cmdb-gc"></a>

Glue 接続オブジェクトを使用して AWS CMDB コネクタを設定することをお勧めします。そのためには、AWS CMDB コネクタ Lambda の `glue_connection` 環境変数を、使用する Glue 接続の名前に設定します。

**Glue 接続プロパティ**

次のコマンドを使用して、Glue 接続オブジェクトのスキーマを取得します。このスキーマには、接続を制御するために使用できるすべてのパラメータが含まれています。

```
aws glue describe-connection-type --connection-type CMDB
```

**Lambda 環境プロパティ**

**glue\$1connection** – フェデレーションコネクタに関連付けられた Glue 接続の名前を指定します。

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

### レガシー接続
<a name="connectors-cmdb-legacy"></a>

**注記**  
2024 年 12 月 3 日以降に作成された Athena データソースコネクタは、AWS Glue 接続を使用します。

以下に示すパラメータ名と定義は、関連付けられた Glue 接続なしで作成された Athena データソースコネクタ用です。以下のパラメータは、Athena データソースコネクタの以前のバージョンを[手動でデプロイ](connect-data-source-serverless-app-repo.md)する場合、または `glue_connection` 環境プロパティが指定されていない場合にのみ使用します。

**Lambda 環境プロパティ**
+ **spill\$1bucket** – Lambda 関数の上限を超えたデータに対して、Amazon S3 バケットを指定します。
+ **spill\$1prefix** – (オプション) 指定された `athena-federation-spill` という `spill_bucket` の、デフォルトのサブフォルダに設定します。このロケーションで、Amazon S3 の[ストレージライフサイクル](https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-lifecycle-mgmt.html)を設定し、あらかじめ決められた日数または時間数以上経過したスピルを削除することをお勧めします。
+ **spill\$1put\$1request\$1headers** – (オプション) スピリングに使用される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\$1key\$1id** – (オプション) デフォルトでは、Amazon S3 に送信されるすべてのデータは、AES-GCM で認証された暗号化モードとランダムに生成されたキーを使用して暗号化されます。KMS が生成したより強力な暗号化キー (たとえば `a7e63k4b-8loc-40db-a2a1-4d0en2cd8331`) を Lambda 関数に使用させる場合は、KMS キー ID を指定します。
+ **disable\$1spill\$1encryption** – (オプション) `True` に設定されている場合、スピルに対する暗号化を無効にします。デフォルト値は `False` です。この場合、S3 にスピルされたデータは、AES-GCM を使用して (ランダムに生成されたキー、または KMS により生成したキーにより) 暗号化されます。スピル暗号化を無効にすると、特にスピルされる先で[サーバー側の暗号化](https://docs.aws.amazon.com/AmazonS3/latest/userguide/serv-side-encryption.html)を使用している場合に、パフォーマンスが向上します。
+ **default\$1ec2\$1image\$1owner** – (オプション) 設定されている場合、[Amazon マシンイメージ (AMI)](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/AMIs.html) をフィルタリングする、デフォルトの Amazon EC2 イメージ所有者を管理します。この値が設定されておらず、EC2 イメージテーブルに対するクエリが所有者に対するフィルタを含まない場合は、すべてのパブリックイメージが結果に含まれます。

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

Athena AWS CMDB コネクタは、次のデータベースとテーブルが、AWS のリソースインベントリーをクエリできるようにします。各テーブルで使用できる列の詳細は、Athena コンソールまたは API から、`DESCRIBE database.table` ステートメントを実行すると確認できます。
+ **ec2** – このデータベースには、以下をはじめとした Amazon EC2 の関連リソースが含まれています。
+ **ebs\$1volumes** – Amazon EBS ボリュームの詳細が含まれます。
+ **ec2\$1instances** – EC2 インスタンスの詳細が含まれます。
+ **ec2\$1images** – EC2 インスタンスイメージの詳細が含まれます。
+ **routing\$1tables** – VPC ルートテーブルの詳細が含まれます。
+ **security\$1groups** – セキュリティグループの詳細が含まれます。
+ **subnets** – VPC サブネットの詳細が含まれます。
+ **vpcs** – VPC の詳細が含まれます。
+ **emr** – このデータベースは、以下をはじめとした Amazon EMR 関連のリソースを含みます。
+ **emr\$1clusters** – EMR クラスターの詳細が含まれます。
+ **rds** – このデータベースは、以下をはじめとした Amazon RDS 関連のリソースを含みます。
+ **rds\$1instances** – RDS インスタンスの詳細が含まれます。
+ **s3** – このデータベースは、以下をはじめとした RDS 関連のリソースを含みます。
+ **buckets** – Amazon S3 バケットの詳細が含まれます。
+ **objects** – Amazon S3 オブジェクトの詳細を含みますが、オブジェクトの内容は含みません。

## 必要な許可
<a name="connectors-cmdb-required-permissions"></a>

このコネクタが必要とする IAM ポリシーの完全な詳細は、[athena-aws-cmdb.yaml](https://github.com/awslabs/aws-athena-query-federation/blob/master/athena-aws-cmdb/athena-aws-cmdb.yaml) ファイルの `Policies` セクションを参照してください。次のリストは、必要なアクセス権限をまとめたものです。
+ **Amazon S3 への書き込みアクセス** – 大規模なクエリからの結果をスピルするために、コネクタは Amazon S3 内のロケーションへの書き込みアクセス権限を必要とします。
+ **Athena GetQueryExecution** – コネクタはこの権限を使用して、アップストリームの Athena クエリが終了した際に fast-fail を実行します。
+ **S3 List** – コネクタは、このアクセス許可を使用して Amazon S3 のバケットとオブジェクトをリストします。
+ **EC2 Describe** – コネクタは、Amazon EC2 インスタンス、セキュリティグループ、VPC、Amazon EBS ボリュームなどのリソースを詳細表示する際に、このアクセス許可を使用します。
+ **EMR Describe / List** – コネクタは、EMR クラスターの詳細を表示する際に、このアクセス許可を使用します。
+ **RDS Describe** – コネクタは、RDS インスタンスの詳細を表示する際に、このアクセス許可を使用します。

## パフォーマンス
<a name="connectors-cmdb-performance"></a>

現在のところ、Athena AWS CMDB コネクタでは、並列スキャンはサポートされません。述語のプッシュダウンは Lambda 関数内で実行されます。可能な場合、部分述語はクエリ対象のサービスにプッシュされます。例えば、特定の Amazon EC2 インスタンスの詳細についてのクエリでは、目的の詳細表示オペレーションを実行するために、特定のインスタンス ID を使用して EC2 API を呼び出します。

## ライセンス情報
<a name="connectors-cmdb-license-information"></a>

Amazon Athena AWS CMDB コネクタプロジェクトは、[Apache-2.0 ライセンス](https://www.apache.org/licenses/LICENSE-2.0.html)の下で使用許諾されています。

## その他のリソース
<a name="connectors-cmdb-additional-resources"></a>

このコネクタに関するその他の情報については、GitHub.com で[対応するサイト](https://github.com/awslabs/aws-athena-query-federation/tree/master/athena-aws-cmdb)を参照してください。