

# データソース接続を作成する
<a name="connect-to-a-data-source"></a>

Athena データソースコネクタを使用するには、コネクタとデータソースに関する接続情報を保存する AWS Glue 接続を作成します。接続を作成するときは、SQL クエリでデータソースを参照するために使用する名前をデータソースに付けます。

[コンソール](connect-to-a-data-source-console-steps.md)または [CreateDataCatalog API](https://docs.aws.amazon.com/athena/latest/APIReference/API_CreateDataCatalog.html) オペレーションを使用して、Athena でデータソース接続を作成および設定できます。

**Topics**
+ [Athena でデータソースを作成して使用するアクセス許可](connect-to-a-data-source-permissions.md)
+ [Athena コンソールを使用してデータソースに接続する](connect-to-a-data-source-console-steps.md)
+ [AWS Serverless Application Repository を使用してデータソースコネクタをデプロイする](connect-data-source-serverless-app-repo.md)
+ [データソースコネクタまたは AWS Glue 接続用の VPC を作成する](athena-connectors-vpc-creation.md)
+ [AWS アカウントに ECR イメージをプルする](pull-ecr-customer-account.md)
+ [接続を Glue データカタログとして登録する](register-connection-as-gdc.md)
+ [クロスアカウントフェデレーテッドクエリを有効にする](xacct-fed-query-enable.md)
+ [データソースコネクタを更新する](connectors-updating.md)

# Athena でデータソースを作成して使用するアクセス許可
<a name="connect-to-a-data-source-permissions"></a>

データソースを作成して使用するには、次のアクセス許可のセットが必要です。
+ AmazonAthenaFullAccess。これは、Amazon Athena へのフルアクセスと、クエリ、結果の書き込み、データ管理に必要な依存関係へのスコープ付きアクセスを提供します。詳細については、「AWS 管理ポリシーリファレンスガイド」の「[AmazonAthenaFullAccess](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonAthenaFullAccess.html)」を参照してください。
+ CreateDataCatalog API を呼び出すアクセス許可。これらのアクセス許可は、Glue 接続と統合するデータソースを作成する場合にのみ必要です。ポリシー例の詳細については、「[コネクタと Athena カタログの作成に必要なアクセス許可](athena-catalog-access.md)」を参照してください。
+ Lake Formation のきめ細かなアクセスコントロールを使用する場合は、上記のアクセス許可に加えて、次のアクセス許可も必要です。

------
#### [ JSON ]

****  

  ```
  {
    "Version":"2012-10-17",		 	 	 
    "Statement": [
      {
        "Effect": "Allow",
        "Action": [
          "lakeformation:RegisterResource",
          "iam:ListRoles",
          "glue:CreateCatalog",
          "glue:GetCatalogs",
          "glue:GetCatalog"
        ],
        "Resource": "*"
      }
    ]
  }
  ```

------

# Athena コンソールを使用してデータソースに接続する
<a name="connect-to-a-data-source-console-steps"></a>

Athena コンソールを使用して、データソース接続を作成および設定できます。

**データソースへの接続を作成するには**

1. [https://console.aws.amazon.com/athena/](https://console.aws.amazon.com/athena/home) で Athena コンソールを開きます。

1. コンソールのナビゲーションペインが表示されない場合は、左側の展開メニューをクリックします。  
![\[展開メニューを選択します。\]](http://docs.aws.amazon.com/ja_jp/athena/latest/ug/images/nav-pane-expansion.png)

1. ナビゲーションペインで、**[データソースとカタログ]** を選択します。

1. **[データソースとカタログ]** ページで **[データソースを作成]** を選択します。

1. **[Data source selection]** (データソースの選択) については、次のガイドラインを考慮して、Athena でクエリを実行するデータソースを選択します。
   + データソースに対応する接続オプションを選択します。Athena には、MySQL、Amazon DocumentDB、PostgreSQL などのソースに設定できる事前構築されたデータソースコネクタがあります。
   + このページで Apache Hive メタストアまたは他のフェデレーションクエリのデータソースオプションを使用していない場合、Amazon S3 内のデータをクエリするには **[S3 - AWS Glue Data Catalog]** を選択します。Athena では、AWS Glue Data Catalog を使用して Amazon S3 にデータソースのメタデータとスキーマ情報を格納します。これはデフォルト (非フェデレーション) のオプションです。詳細については、「[AWS Glue Data Catalog を使用してデータに接続する](data-sources-glue.md)」を参照してください。このワークフローを使用する手順については、「[Athena でデータカタログを登録して使用する](gdc-register.md)」を参照してください。
   + **[S3 - Apache Hive metastore]** (S3 - Apache Hive メタストア) を選択して、Apache Hive メタストアを使用する Amazon S3 内のデータセットをクエリします。このオプションの詳細については、「[Athena を Apache Hive メタストアに接続する](connect-to-data-source-hive-connecting-athena-to-an-apache-hive-metastore.md)」を参照してください。
   + Athena で使用する独自のデータソースコネクタを作成する場合、[**Custom data source**] (カスタムデータソース) を選択します。データソースコネクタの書き込みについては、「[Athena Query Federation SDK を使用してデータソースコネクタを開発する](connect-data-source-federation-sdk.md)」を参照してください。

1. [**次へ**] を選択します。

1. **[データソース詳細の入力]** ページの **[データソース名]** に、自動生成された名前を使用するか、Athena からデータソースをクエリする際に SQL ステートメントで使用する一意の名前を入力します。名前は最大 127 文字で、アカウント内で一意である必要があります。この設定は、作成後に変更することはできません。有効な文字は、a～z、A～Z、0～9、\$1 (アンダースコア)、@ (at マーク)、および - (ハイフン) です。`awsdatacatalog`、`hive`、`jmx`、および `system` の名前は Athena によって予約されており、データソース名には使用できません。

1. 選択したデータソースが AWS Glue 接続と統合されている場合。

   1. **[AWS Glue 接続の詳細]** に、必要な情報を入力します。接続には、特定のデータソースに接続するために必要なプロパティが含まれます。必要なプロパティは、接続タイプによって異なります。コネクタに関連するプロパティの詳細については、「[使用可能なデータソースコネクタ](connectors-available.md)」を参照してください。追加の接続プロパティの詳細については、「*AWS Glue ユーザーガイド*」の「[AWS Glue 接続プロパティ](https://docs.aws.amazon.com/glue/latest/dg/connection-properties.html)」を参照してください。
**注記**  
Glue 接続プロパティを更新する場合、更新されたプロパティを取得するには Lambda コネクタを再起動する必要があります。これを行うには、環境プロパティを編集し、実際には何も変更せずに保存します。
Glue 接続を更新したときに、対応する Lambda 関数で次のプロパティが自動的に更新されることはありません。これらのプロパティの Lambda 関数を手動で更新する必要があります。  
Lambda VPC 設定 – `security_group_ids`、`subnet_ids`
Lambda 実行ロール – `spill_bucket`、`secret_name`、`spill_kms_key_id`

   1. **[Lambda 実行 IAM ロール]** で、以下のいずれかを選択します。
      + **新しい実行ロールを作成して使用する** – (デフォルト) Athena は、ユーザーに代わって AWS Lambda のリソースにアクセスするために使用する実行ロールを作成します。Athena では、フェデレーティッドデータソースを作成するためにこのロールが必要です。
      + **既存の実行ロールを使用する** – 既存の実行ロールを選択するには、このオプションを使用します。このオプションでは、**[実行ロール]** ドロップダウンから使用する実行ロールを選択します。

1. 選択したデータソースが AWS Glue 接続と統合されていない場合。

   1. **Lambda 関数**を使用する場合、[**Lambda 関数の作成**] を選択します。選択したコネクタの機能ページが AWS Lambda コンソールで開きます。このページには、コネクタに関する詳細情報が表示されます。

   1. [**アプリケーションの設定**] で、各アプリケーション設定の説明をよく読み、要件に対応する値を入力します。

      表示されるアプリケーション設定は、データソースのコネクタによって異なります。最低限必要な設定は次のとおりです。
      + **AthenaCatalogName** – ターゲットとなるデータソースを示す小文字の Lambda 関数の名前です (例えば、`cloudwatchlogs`)。
      + **[SpillBucket]** – Lambda 関数のレスポンスサイズ制限を超えるデータを保存するための、アカウント内の Simple Storage Service (Amazon S3) バケット。
**注記**  
スピルデータは、その後の実行では再利用されることはなく、安全に削除できます。Athena はこれらのデータを削除しません。これらのオブジェクトを管理するには、Simple Storage Service (Amazon S3) スピルバケットから古いデータを削除するオブジェクトライフサイクルポリシーを追加することを検討してください。詳細については、「Amazon S3 ユーザーガイド」の「[ストレージのライフサイクルの管理](https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-lifecycle-mgmt.html)」を参照してください。

   1. **[I acknowledge that this app creates custom IAM roles and resource policies]** (このアプリがカスタム IAM ロールとリソースポリシーを作成することを承認します) を選択します。詳細については、**[Info]** (情報) リンクを選択してください。

   1. **[デプロイ]** を選択します。デプロイが完了すると、Lambda 関数が Lambda コンソールの [**リソース**] セクションに表示されます。

      データソースコネクタをアカウントにデプロイしたら、Athena を接続できます。

   1. Athena コンソールの [**Connect data sources**] (データソースを接続) ページに戻ります。

   1. [**接続の詳細**] セクションで、[**Lambda 関数を選択または入力**] 検索ボックスの横にある更新アイコンを選択します。

   1. Lambda コンソールで作成した関数の名前を選択します。Lambda 関数の ARN が表示されます。

1. (オプション) **[Tags]** (タグ) でキーと値のペアを追加して、このデータソースに関連付けます。タグの詳細については、[Athena リソースにタグ付けする](tags.md)を参照してください。

1. [**次へ**] を選択します。

1. **[確認と作成]** ページで、データソースの詳細を確認します。変更するには、**[Edit]** (編集) を選択します。

1. **[Athena がアカウントにリソースを作成します]** の情報を読みます。同意する場合は、**[Athena がユーザーに代わってリソースを作成することを承認します]** を選択します。

1. **[データソースを作成]** を選択します。**Athena** がユーザー用に次のリソースを作成します。
   + Lambda 実行 IAM ロール
   + AWS Glue 接続 (データソースが AWS Glue 接続と互換性がある場合のみ）
   + Lambda function

データソースのページの [**データソースの詳細**] セクションには、新しいコネクタに関する情報が表示されます。これで、Athena クエリでコネクタを使用できるようになりました。

データコネクタを使用したクエリについては、「[フェデレーティッドクエリを実行する](running-federated-queries.md)」を参照してください。

# AWS Serverless Application Repository を使用してデータソースコネクタをデプロイする
<a name="connect-data-source-serverless-app-repo"></a>

データソースコネクタをデプロイするには、AWS Glue 接続を使用する代わりに [AWS Serverless Application Repository](https://aws.amazon.com/serverless/serverlessrepo/) を使用できます。

**注記**  
カスタムコネクタを使用している場合、または古いコネクタを使用する必要がある場合にのみ、SAR を使用することをお勧めします。それ以外の場合は、Athena コンソールを使用することをお勧めします。

AWS Serverless Application Repository を使用すると、使用する対象のコネクタを検索し、コネクタに必要なパラメータを指定した上で、そのコネクタをアカウントにデプロイできます。コネクタのデプロイが完了したら、Athena コンソールを使用して Athena がデータソースを使用できるようにします。

## アカウントへのコネクタのデプロイ
<a name="connect-data-source-serverless-app-repo-deploying"></a>

**AWS Serverless Application Repository を使用してデータソースコネクタをアカウントにデプロイするには**

1. AWS マネジメントコンソール にサインインし、**サーバーレスアプリケーションリポジトリ**を開きます。

1. ナビゲーションペインで、[**Available applications**] (利用可能なアプリケーション) を選択します。

1. **[Show apps that create custom roles or resource policies]** (カスタム IAM ロールまたはリソースポリシーを作成するアプリを表示する) オプションを選択します。

1. 検索ボックスに、コネクタの名前を入力します。事前構築された Athena データコネクタのリストについては、「[使用可能なデータソースコネクタ](connectors-available.md)」を参照してください。

1. コネクタの名前を選択します。コネクタを選択すると、Lambda 関数の **[Application details]** (アプリケーションの詳細) ページが AWS Lambda コンソールに表示されます。

1. 詳細ページの右側の **[Application settings]** (アプリケーションの設定) で、必要な情報を入力します。最低限必要な設定は次のとおりです。Athena で構築されるデータコネクタのその他の設定可能なオプションについては、GitHub の「[Available connectors](https://github.com/awslabs/aws-athena-query-federation/wiki/Available-Connectors)」(使用可能なコネクタ) の対応するトピックを参照してください。
   + **AthenaCatalogName** — ターゲットとなるデータソースを示す小文字の Lambda 関数の名前 (例えば、`cloudwatchlogs`)。
   + **SpillBucket** — アカウント内の Amazon S3 バケットを指定して、Lambda 関数のレスポンスサイズ制限を超える大規模なレスポンスペイロードからデータを受信します。

1. **[I acknowledge that this app creates custom IAM roles and resource policies]** (このアプリがカスタム IAM ロールとリソースポリシーを作成することを承認します) を選択します。詳細については、**[Info]** (情報) リンクを選択してください。

1. **[Application settings]** (アプリケーションの設定) セクションの右下で **[Deploy]** (デプロイ) を選択します。デプロイが完了すると、Lambda 関数が Lambda コンソールの [**リソース**] セクションに表示されます。

## コネクタを Athena で使用できるようにする
<a name="connect-data-source-serverless-app-repo-making-the-connector-available-in-athena"></a>

Athena コンソールを使用して、データソースコネクタを Athena で使用できるようにします。

**データソースコネクタを Athena で使用できるようにするには**

1. [https://console.aws.amazon.com/athena/](https://console.aws.amazon.com/athena/home) で Athena コンソールを開きます。

1. コンソールのナビゲーションペインが表示されない場合は、左側の展開メニューをクリックします。  
![\[展開メニューを選択します。\]](http://docs.aws.amazon.com/ja_jp/athena/latest/ug/images/nav-pane-expansion.png)

1. ナビゲーションペインで、**[データソースとカタログ]** を選択します。

1. **[データソースとカタログ]** ページで **[データソースを作成]** を選択します。

1. **[データソースを選択]** で、AWS Serverless Application Repository でコネクタを作成したデータソースを選択します。このチュートリアルでは、フェデレーションデータソースとして **Amazon CloudWatch Logs** を選択します。

1. [**次へ**] を選択します。

1. [**Data source details**] (データソースの詳細) ページの [**Data source name**] (データソース名) に、Athena からデータソースをクエリする際に SQL ステートメントで使用する名前 (例えば `CloudWatchLogs`) を入力します。名前は最大 127 文字で、アカウント内で一意である必要があります。この設定は、作成後に変更することはできません。有効な文字は、a～z、A～Z、0～9、\$1 (アンダースコア)、@ (at マーク)、および - (ハイフン) です。`awsdatacatalog`、`hive`、`jmx`、および `system` の名前は Athena によって予約されており、データソース名には使用できません。

1. [**接続の詳細**] セクションで、[**Lambda 関数を選択または入力**] ボックスを使って、先ほど作成した関数の名前を選択します。Lambda 関数の ARN が表示されます。

1. (オプション) **[Tags]** (タグ) でキーと値のペアを追加して、このデータソースに関連付けます。タグの詳細については、[Athena リソースにタグ付けする](tags.md)を参照してください。

1. [**次へ**] を選択します。

1. [**Review and create**] (確認と作成) ページで、データソースの詳細について確認し、[**Add data source**] (データソースの追加) を選択します。

1. データソースのページの [**データソースの詳細**] セクションには、新しいコネクタに関する情報が表示されます。これで、Athena クエリでコネクタを使用できるようになりました。

   データコネクタを使用したクエリについては、「[フェデレーティッドクエリを実行する](running-federated-queries.md)」を参照してください。

# データソースコネクタまたは AWS Glue 接続用の VPC を作成する
<a name="athena-connectors-vpc-creation"></a>

一部の Athena データソースコネクタと AWS Glue 接続には VPC とセキュリティグループが必要です。このトピックでは、サブネットと VPC 用のセキュリティグループを持つ VPC を作成する方法について説明します。このプロセスの一環として、作成した VPC、サブネット、およびセキュリティグループの ID を取得します。これらの ID は、AWS Glue 接続またはデータソースコネクタを Athena で使用するように設定するときに必要になります。

**Athena データソースコネクタ用の VPC を作成するには**

1. AWS マネジメントコンソール にサインインして、Amazon VPC コンソール ([https://console.aws.amazon.com/vpc/](https://console.aws.amazon.com/vpc/)) を開きます。

1. **[Create VPC（VPC の作成）]** を選択します。

1. **[VPC の作成]** ページの **[VPC 設定]** の下で、**[作成するリソース]** に、**[VPC など]** を選択します。

1. **[名前タグの自動生成]** の下で、**[自動生成]** に、VPC 内のすべてのリソースの名前タグを生成する際に使用される値を入力します。

1. **[Create VPC（VPC の作成）]** を選択します。

1. プロセスが完了したら、**[VPC を表示]** を選択します。

1. **[Details]** (詳細) セクションの **[VPC ID]** に、後で参照できるように VPC ID をコピーします。

これで、先ほど作成した VPC のサブネット ID を取得する準備が整いました。

**VPC サブネット ID を取得するには**

1. VPC コンソールのナビゲーションペインで、**[Subnets]** (サブネット) を選択します。

1. **[VPC]** 列にメモした VPC ID があるサブネットの名前を選択して指定します。

1. **[Details]** (詳細) セクションの **[Subnet ID]** (サブネット ID) に、後で参照できるようにサブネット ID をコピーします。

次に、VPC 用のセキュリティグループを作成します。

**VPC 用のセキュリティグループを作成するには**

1. VPC コンソールのナビゲーションペインで、**[Security]** (セキュリティ)、**[Security Groups]** (セキュリティグループ) を選択します。

1. **[セキュリティグループの作成]** を選択してください。

1. **[Create security group]** (セキュリティグループの作成) ページで、以下の情報を入力します。
   + **[Security group name]** (セキュリティグループ名) に、セキュリティグループの名前を入力します。
   + **[Description]** (説明) に、セキュリティグループの説明を入力します。説明が必要です。
   + **[VPC]** に、データソースコネクタ用に作成した VPC の VPC ID を選択して指定します。
   + **[Inbound rules]** (インバウンドルール) と **[Outbound rules]** (アウトバウンドルール) で、必要なインバウンドルールとアウトバウンドルールを追加します。

1. **[セキュリティグループの作成]** を選択してください。

1. セキュリティグループの **[Details]** (詳細) ページに、後で参照できるように **[Security group ID]** (セキュリティグループ ID) をコピーします。

## Athena コネクタで VPC を使用する際の重要な考慮事項
<a name="vpc-warning-instructions"></a>

すべてのコネクタは VPC を利用できるため、以下の手順はすべての Athena コネクタに適用されます。

**注記**  
AWS Glue 接続で VPC を使用する場合は、次の PrivateLink エンドポイントを設定する必要があります。  
Amazon S3
AWS Glue
AWS 秘密マネジャー

あるいは、パブリックインターネットアクセスを使用することもできますが、セキュリティ上の理由からお勧めしません。

**警告**  
パブリックインターネットアクセスを使用すると、リソースが追加のセキュリティリスクにさらされる可能性があります。VPC 設定のセキュリティを強化するために PrivateLink エンドポイントを使用することを強くお勧めします。

# AWS アカウントに ECR イメージをプルする
<a name="pull-ecr-customer-account"></a>

Athena フェデレーションコネクタの Lambda 関数は、Athena が管理する Amazon ECR リポジトリに保存されているコンテナイメージを使用します。これらのコンテナイメージに対してセキュリティスキャンを実行するには、まずそれらをアカウントの Amazon ECR リポジトリにコピーする必要があります。このセクションでは、イメージをリポジトリにコピーし、そのイメージを使用するように Lambda 関数を設定する方法について、手順ごとに説明します。

## 前提条件
<a name="pull-ecr-customer-account-prereq"></a>
+ Athena フェデレーションコネクタ – コンテナイメージを使用する限り、任意のソースからコネクタを作成できます。
**注記**  
イメージのデプロイを確認するには、Athena フェデレーションコネクタ Lambda の [イメージ] タブをチェックします。
+ Docker のインストールと実行
+ AWS CLI のインストール
+ 適切なプルアクセス許可を持つアカウント認証情報

## イメージの転送方法
<a name="image-transfer-procedure"></a>

1. Athena フェデレーションコネクタ Lambda からイメージ URI を見つけます  
**Example**  

   ```
   account_id_1.dkr.ecr.us-east-1.amazonaws.com/athena-federation-repository:2025.15.1
   ```

1. Athena が管理するアカウントの Docker 認証トークンを生成します。

   ```
   aws ecr get-login-password --region regionID | docker login --username AWS --password-stdin athena-managed-registry
   ```

   コードの説明は以下のとおりです。
   + *regionID* はデプロイリージョンです (例: us-east-1)
   + *athena-managed-registry* はイメージ URI のレジストリ部分になります (例: account\$1id\$11.dkr.ecr.us-east-1.amazonaws.com)

1. Athena が管理するアカウントからイメージをプルします。

   ```
   docker pull athenaImageURI
   ```

1. レジストリに対して Docker を認証します。

   ```
   aws ecr get-login-password --region regionID | docker login --username AWS --password-stdin customer-registry
   ```

   ここで *customer-registry* は ECR レジストリになります (例: account\$1id\$12.dkr.ecr.us-east-1.amazonaws.com)

1. リポジトリ用にプルしたイメージにタグを付けます。

   ```
   docker tag athenaImageURI yourImageURI
   ```

1. イメージをリポジトリにプッシュします。

   ```
   docker push yourImageURI
   ```

1. Athena フェデレーションコネクタを更新します。

   1. Lambda 関数に移動する

   1. **[新しいイメージをデプロイ]** を選択する

   1. 新しいイメージ URI を入力する

   Athena フェデレーティッドコネクタイメージがアカウントに配置され、イメージに対して CVE スキャンを実行できるようになりました。

# 接続を Glue データカタログとして登録する
<a name="register-connection-as-gdc"></a>

データソースを作成したら、Athena コンソールを使用して接続を Glue データカタログとして登録できます。登録すると、フェデレーティッドデータカタログを管理し、Lake Formation を使用してきめ細かなアクセスコントロールを有効にすることができます。詳細については、「[フェデレーティッドカタログの作成](https://docs.aws.amazon.com/lake-formation/latest/dg/create-fed-catalog-data-source.html)」を参照してください。

次のコネクタを登録して AWS Glue と統合し、きめ細かなアクセスコントロールを行うことができます。
+ Redshift
+ BigQuery
+ DynamoDB (プレビュー）
+ Snowflake (プレビュー）
+ MySQL
+ PostgreSQL
+ AWS CMDB
+ Timestream
+ Azure Data Lake Storage
+ Azure Synapse
+ IBM Db2
+ IBM Db2 AS/400 (Db2 iSeries)
+ DocumentDB
+ Google Cloud Storage
+ HBase
+ OpenSearch
+ Oracle
+ SAP HANA
+ SQL Server
+ TPC-DS
+ Cloudera Hive
+ Cloudwatch
+ Cloudwatch メトリクス
+ Teradata
+ Vertica

## 前提条件
<a name="register-connection-as-gdc-pre"></a>

開始する前に、次の前提条件を満たしている必要があります
+ ロケーションの登録に必要なロールとアクセス許可があることを確認します。詳細については、「AWS Lake Formation デベロッパーガイド」の「[ロールの要件](https://docs.aws.amazon.com/lake-formation/latest/dg/registration-role.html)」を参照してください。
+ 必要な Lake Formation ロールがあることを確認します。詳細については、「AWS Lake Formation デベロッパーガイド」の「[データカタログを外部データソースに接続するための前提条件](https://docs.aws.amazon.com/lake-formation/latest/dg/federated-catalog-data-connection.html)」を参照してください。
+ Glue に登録するロールには、次の例に示すアクセス許可が必要です。

------
#### [ JSON ]

****  

  ```
  {
      "Version":"2012-10-17",		 	 	 
      "Statement": [
          {
              "Effect": "Allow",
              "Action": [
                  "s3:ListBucket",
                  "s3:GetObject"
              ],
              "Resource": [
      "arn:aws:s3:::amzn-s3-demo-bucket/spill-prefix/*",
      "arn:aws:s3:::amzn-s3-demo-bucket/spill-prefix"
              ]
          },
          {
              "Sid": "lambdainvoke",
              "Effect": "Allow",
              "Action": "lambda:InvokeFunction",
              "Resource": "arn:aws:lambda:us-east-1:111122223333:function:lambda_function_name"
          },
          {
              "Sid": "gluepolicy",
              "Effect": "Allow",
              "Action": "glue:*",
              "Resource": [
              "arn:aws:glue:us-east-1:111122223333:connection/<connection_name>",
      "arn:aws:glue:us-east-1:111122223333:catalog"
              ]
          }
      ]
  }
  ```

------
+ 適切なデータアクセスを決定および管理するのはお客様の責任です。フェデレーティッドクエリに対するきめ細かなアクセスコントロールでは、[AmazonAthenaFullAccess](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonAthenaFullAccess.html) 管理ポリシーを使用することをお勧めします。独自のポリシーを使用する場合は、フェデレーティッドクエリを実行するユーザーが次のリソースにアクセスできないようにする必要があります。
  + Glue 接続で指定された Lambda コネクタの `lambda:InvokeFunction`
  + IAM でのスピルバケットの場所へのアクセス
  + フェデレーティッドカタログに関連付けられた Glue 接続へのアクセス
  + IAM の Lake Formation ロール

## コンソールを使用して接続を登録する
<a name="register-connection-as-gdc-steps"></a>

**接続を Glue データカタログとして登録するには**

1. [https://console.aws.amazon.com/athena/](https://console.aws.amazon.com/athena/home) で Athena コンソールを開きます。

1. ナビゲーションペインで、**[データソースとカタログ]** を選択します。

1. **[データソース]** リストから、作成したデータソースを選択して **[データソースの詳細]** ページを開きます。

1. **[AWS Lake Formation の使用を開始する]** を選択します。
**注記**  
このオプションを選択したら、Lambda 関数を自分で管理する必要があります。Athena は Lambda 関数を削除しません。

1. **[データカタログ名]** には、カタログの一意の名前を指定します。

1. Lambda 関数を呼び出すアクセス許可を Lake Formation に付与する **[Lake Formation IAM ロール]** を選択します。[例](#register-connection-as-gdc-pre)に示すようなアクセス許可をロールが持っていることを確認します。

1. テキストボックスに「**confirm**」と入力して Athena データソースを削除し、Glue データカタログ登録に置き換えます。
**注記**  
このアクションにより、Athena データソースが削除され、代わりに新しい Glue データカタログが作成されます。このプロセスが完了したら、データソースにアクセスするクエリを更新して、代わりに新しく作成された Glue データカタログを参照する必要がある場合があります。

1. **[カタログを作成し Lake Formation に移動]** を選択します。これにより、Lake Formation コンソールが開き、そこでカタログを管理し、カタログ、データベース、テーブルに対するアクセス許可をユーザーに付与できます。

# クロスアカウントフェデレーテッドクエリを有効にする
<a name="xacct-fed-query-enable"></a>

フェデレーションクエリを使用すると、AWS Lambda にデプロイされたデータソースコネクタを使用して Amazon S3 以外のデータソースをクエリできます。クロスアカウントのフェデレーションクエリ機能を使用すると、Lambda 関数とクエリ対象のデータソースを異なるアカウントに配置できます。

**注記**  
この方法は、フェデレーティッドデータソースを AWS Glue Data Catalog に登録していない場合にのみ使用します。データソースを AWS Glue Data Catalog に登録している場合は、AWS Glue Data Catalog クロスアカウント機能とアクセス許可モデルを使用します。詳細については、「*AWS Glue ユーザーガイド*」の「[クロスアカウントアクセス許可の付与](https://docs.aws.amazon.com/glue/latest/dg/cross-account-access.html)」を参照してください。

データ管理者は、データコネクタをデータアナリストのアカウントと共有することでクロスアカウントの串刺検索を有効化できます。また、データアナリストは、データ管理者から共有された Lambda ARN を使用してアカウントに追加することでクロスアカウントの串刺検索を有効化できます。元のアカウントのコネクタの設定を変更すると、更新された設定は自動的に他のユーザーのアカウントのコネクタの共有インスタンスに適用されます。

## 考慮事項と制限事項
<a name="xacct-fed-query-enable-considerations-and-limitations"></a>
+ クロスアカウントのフェデレーションクエリ機能は、Lambda ベースのデータソースを使用する Hive 以外のメタストアデータのコネクタで使用できます。
+ AWS Glue Data Catalog データソース型では、この機能は使用できません。AWS Glue Data Catalog へのクロスアカウントアクセスの詳細については、「[AWS Glue データカタログへのクロスアカウントアクセスを構成する](security-iam-cross-account-glue-catalog-access.md)」を参照してください。
+ コネクタの Lambda 関数からの応答が Lambda 応答サイズの制限である 6 MB を超えると、Athena は自動的に応答を暗号化してバッチ処理し、設定した Amazon S3 バケットに流出します。Athena が流出したデータを読み取るには、Athena クエリを実行するエンティティが流出場所にアクセスできる必要があります。クエリが完了するとデータが不要になるため、流出場所からオブジェクトを削除するように Amazon S3 ライフサイクルポリシーを設定することをお勧めします。
+ AWS リージョン をまたいだフェデレーションクエリの使用はサポートされていません。

## 必要なアクセス許可
<a name="xacct-fed-query-enable-required-permissions"></a>

必要なアクセス許可を設定するには、アカウント A (*444455556666*) とアカウント B (*111122223333*) の両方でアクションを実行する必要があります。

### アカウント A のアクション
<a name="xacct-fed-query-enable-required-permissions-account-a"></a>

データ管理者のアカウント A がデータアナリストのアカウント B と Lambda 関数を共有するには、アカウント B に Lambda の呼び出し関数と流出バケットのアクセスが必要です。したがって、アカウント A では、Lambda 関数への[リソースベースのポリシー](https://docs.aws.amazon.com/lambda/latest/dg/access-control-resource-based.html)と Amazon S3 内の流出バケットへの[プリンシパル](https://docs.aws.amazon.com/AmazonS3/latest/userguide/access-policy-language-overview.html)アクセスを追加する必要があります。

1. 次のポリシーは、アカウント A の Lambda 関数で Lambda の呼び出し関数のアクセス許可をアカウント B に付与します。

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Sid": "CrossAccountInvocationStatement",
               "Effect": "Allow",
               "Principal": {
                   "AWS": [
                       "arn:aws:iam::111122223333:user/username"
                   ]
               },
               "Action": "lambda:InvokeFunction",
               "Resource": "arn:aws:lambda:us-east-1:444455556666:function:lambda-function-name"
           }
       ]
   }
   ```

------

1. 次のポリシーは、アカウント B のプリンシパルに流出バケットへのアクセスを許可します。

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Principal": {
               "AWS": ["arn:aws:iam::111122223333:user/username"]
               },
               "Action": [
                   "s3:GetObject",
                   "s3:ListBucket"
                ],
               "Resource": [
                   "arn:aws:s3:::spill-bucket",
                   "arn:aws:s3:::spill-bucket/*"
               ]
           }
        ]
    }
   ```

------

1. Lambda 関数がフェデレーション SDK によって提供されるデフォルトの暗号化ではなく、AWS KMS キーを使用して流出バケットを暗号化している場合、次の例のようにアカウント A の AWS KMS キーポリシーで、アカウント B のユーザーにアクセス許可を付与する必要があります。

   ```
   { 
       "Sid": "Allow use of the key", 
       "Effect": "Allow", 
       "Principal": 
       { 
          "AWS": ["arn:aws:iam::account-B-id:user/username"] 
       }, 
       "Action": [ "kms:Decrypt" ], 
       "Resource": "*" // Resource policy that gets placed on the KMS key. 
    }
   ```

### アカウント B のアクション
<a name="xacct-fed-query-enable-required-permissions-account-b"></a>

アカウント A のコネクタをアカウント B と共有するには、AWS Security Token Service の [AssumeRole](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html) API アクションを呼び出すことでアカウント A が引き受ける `AthenaCrossAccountCreate-account-A-id` というロールをアカウント B で作成する必要があります。

1. IAM コンソールまたは AWS CLI を使用して、カスタム信頼ポリシーロールとして `AthenaCrossAccountCreate-account-A-id` ロールを作成します。カスタムの信頼ポリシーを使用すると、アクセスを委任し、他のユーザーに自分の AWS アカウントでのアクションの実行を許可できます。詳細については、「*IAM ユーザーガイド*」の「[カスタム信頼ポリシーを使用してロールを作成する](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-custom.html)」を参照してください。

   信頼関係には、次の例のように、キーが `AWS` で、値がアカウント A の ARN であるプリンシパルオブジェクトが必要です。

   ```
   ...
   "Principal": 
   { 
      "AWS": ["arn:aws:iam::account-A-id:user/username"]
   }, 
   ...
   ```

1. また、アカウント B で、`CreateDataCatalog` アクションを許可する次のようなポリシーを作成します。

   ```
   {
    "Effect": "Allow",
    "Action": "athena:CreateDataCatalog",
    "Resource": "arn:aws:athena:*:account-B-id:datacatalog/*"
   }
   ```

1. アカウント B を使用して作成した `AthenaCrossAccountCreate-account-A-id` ロールに `CreateDataCatalog` アクションを許可するポリシーを追加します。

## アカウント A のデータソースをアカウント B と共有する
<a name="xacct-fed-query-enable-sharing-a-lambda-data-source-in-account-a-with-account-b"></a>

アクセス許可を設定すると、Athena コンソールの **[データソースとカタログ]** ページで、アカウント (アカウント A) のデータコネクタを別のアカウント (アカウント B) と共有できます。アカウント A は、コネクタの完全な制御と所有権を保持しています。アカウント A がコネクタの設定を変更すると、更新された設定がアカウント B の共有されたコネクタに適用されます。

**注記**  
Lambda タイプのデータソースのみを共有でき、AWS Glue 接続を使用するデータソースは共有できません。詳細については、「[使用可能なデータソースコネクタ](connectors-available.md)」を参照してください。

**アカウント A の Lambda データソースをアカウント B と共有するには**

1. [https://console.aws.amazon.com/athena/](https://console.aws.amazon.com/athena/home) で Athena コンソールを開きます。

1. コンソールのナビゲーションペインが表示されない場合は、左側の展開メニューをクリックします。  
![\[展開メニューを選択します。\]](http://docs.aws.amazon.com/ja_jp/athena/latest/ug/images/nav-pane-expansion.png)

1. **[データソースとカタログ]** を選択します。

1. **[データソースとカタログ]** ページで、共有するコネクタのリンクを選択します。

1. Lambda データソースの詳細ページで、右上隅の **[Actions]** (アクション) メニューから **[Share]** (共有) オプションを選択します。

1. **[Share *Lambda-name* with another account?]** (別のアカウントと Lambda-name を共有) ダイアログボックスで、必要な情報を入力します。
   + **[Data source name]** (データソース名) については、コピーしたデータソースの名前を他のアカウントで表示したいとおりに入力します。
   + **[Account ID]** (アカウント ID) については、データソースを共有するアカウントの ID を入力します (この場合、アカウント B)。

1. [**共有**] を選択します。指定した共有のデータコネクタが、アカウント B で作成されます。アカウント A のコネクタに対する設定の変更は、アカウント B のコネクタに適用されます。

## アカウント A からアカウント B への共有データソースの追加
<a name="xacct-fed-query-enable-add-a-shared-lambda-function-arn-to-your-account"></a>

データアナリストとして、データ管理者からアカウントに追加するコネクタの ARN が与えられる場合があります。Athena コンソールの **[データソースとカタログ]** ページを使用して、管理者から提供された Lambda ARN をアカウントに追加できます。

**共有されたデータコネクタの Lambda ARN をアカウントに追加するには**

1. [https://console.aws.amazon.com/athena/](https://console.aws.amazon.com/athena/home) で Athena コンソールを開きます。

1. ナビゲーションペインが表示されない場合は、左側の展開メニューをクリックします。

1. **[データソースとカタログ]** を選択します。

1. **[データソースとカタログ]** ページで **[データソースを作成]** を選択します。

1. **[Choose a data source]** (データソースの選択) ページで、**[Custom or shared connector]** (カスタムまたは共有されたコネクタ) を選択します。

1. [**次へ**] を選択します。

1. **[Enter data source details]** (データソースの詳細を入力) ページの **[Connection details]** (接続の詳細) セクションで、**[Select or enter a Lambda function]** (Lambda 関数を選択または入力) については、アカウント A の Lambda ARN を入力します。

1. [**次へ**] を選択します。

1. **[Review and create]** (確認して作成) ページで、**[Create data source]** (データソースを作成) を選択します。

## トラブルシューティング
<a name="xacct-fed-query-enable-troubleshooting"></a>

アカウント A にアカウント B のロールを引き受けるアクセス許可がないというエラーメッセージが表示された場合は、アカウント B で作成されたロールの名前のスペルが正しいこと、適切なポリシーがアタッチされていることを確認してください。

# データソースコネクタを更新する
<a name="connectors-updating"></a>

最新バージョンを使用して新機能と機能強化を利用するために、Athena ではデータソースコネクタを定期的に更新することを推奨しています。データソースコネクタの更新には、次のステップが含まれます。

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

## 最新バージョンの Athena Query Federation を確認する
<a name="connectors-updating-finding-the-latest-version"></a>

Athena データソースコネクタの最新バージョン番号は、最新の Athena Query Federation バージョンに対応しています。特定のケースでは、GitHub のリリースが AWS Serverless Application Repository (SAR) で入手可能なリリースよりも少し新しい可能性があります。

**最新の Athena Query Federation バージョン番号を確認するには**

1. GitHub URL ([https://github.com/awslabs/aws-athena-query-federation/releases/latest](https://github.com/awslabs/aws-athena-query-federation/releases/latest)) を確認してください。

1. メインページの見出し次の形式のようになっており、そこからリリース番号を書き留めます。

   **Release v** *年*.*年の X 週目*.*週の周期* **of Athena Query Federation **

   例えば、**Release v2023.8.3 of Athena Query Federation** のリリース番号は 2023.8.3 です。

## コネクタバージョンの検索
<a name="connectors-find-version"></a>

現在使用しているコネクタのバージョンを確認するには、次の手順に従います。

**コネクタバージョンを検索するには**

1. Lambda アプリケーションの Lambda コンソールページで、**[イメージ]** タブを選択します。

1. [イメージ] タブで、イメージ URI を見つけます。URI は次の形式に従います。

   ```
   Image_location_account.dkr.ecr.us-west-2.amazonaws.com/athena-federation-repository:Version
   ```

1. イメージ URI のバージョン番号は、形式 `year.week_of_year.iteration_of_week` (例: `2021.42.1`) に従います。この数値はコネクタバージョンを表しています。

## 新しいコネクタバージョンのデプロイ
<a name="connectors-deploy-new-version"></a>

新しいバージョンのコネクタをデプロイするには、次のステップに従います。

**新しいコネクタバージョンをデプロイするには**

1. 最新バージョンの Athena Query Federation を確認する手順に従って、必要なバージョンを検索します。

1. フェデレーティッドコネクタの Lambda 関数で、Image URI を見つけ、タグを希望のバージョンに更新します。例えば、次のようになります。

   変更前:

   ```
   509399631660.dkr.ecr.us-east-1.amazonaws.com/athena-federation-repository:2025.15.1
   ```

   変更後:

   ```
   509399631660.dkr.ecr.us-east-1.amazonaws.com/athena-federation-repository:2025.26.1
   ```

**注記**  
現在のバージョンが 2025.15.1 より古い場合は、次の重要な変更点に注意してください。  
リポジトリ名が `athena-federation-repository` に更新されました
この更新より前のバージョンでは、コマンドオーバーライドが設定されていない可能性があります。複合ハンドラーに設定する必要があります。

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

## 最新バージョンの Athena Query Federation を確認する
<a name="connectors-updating-finding-the-latest-version"></a>

Athena データソースコネクタの最新バージョン番号は、最新の Athena Query Federation バージョンに対応しています。特定のケースでは、GitHub のリリースが AWS Serverless Application Repository (SAR) で入手可能なリリースよりも少し新しい可能性があります。

**最新の Athena Query Federation バージョン番号を確認するには**

1. GitHub URL ([https://github.com/awslabs/aws-athena-query-federation/releases/latest](https://github.com/awslabs/aws-athena-query-federation/releases/latest)) を確認してください。

1. メインページの見出し次の形式のようになっており、そこからリリース番号を書き留めます。

   **Release v** *年*.*年の X 週目*.*週の周期* **of Athena Query Federation **

   例えば、**Release v2023.8.3 of Athena Query Federation** のリリース番号は 2023.8.3 です。

## リソース名を検索して書き留める
<a name="connectors-updating-finding-and-noting-resource-names"></a>

アップグレードの準備として、次の情報を確認して書き留めておく必要があります:

1. コネクタの Lambda 関数名。

1. Lambda 関数の環境変数。

1. コネクタの Lambda 関数を管理する Lambda アプリケーション名。

**Athena コンソールからリソース名を検索するには**

1. [https://console.aws.amazon.com/athena/](https://console.aws.amazon.com/athena/home) で Athena コンソールを開きます。

1. コンソールのナビゲーションペインが表示されない場合は、左側の展開メニューをクリックします。  
![\[展開メニューを選択します。\]](http://docs.aws.amazon.com/ja_jp/athena/latest/ug/images/nav-pane-expansion.png)

1. ナビゲーションペインで、**[データソースとカタログ]** を選択します。

1. **[データソース名]** 列で、コネクタのデータソースへのリンクを選択します。

1. **[データソースの詳細]** セクションの **[Lambda 関数]** で、Lambda 関数へのリンクを選択します。  
![\[Lambda 関数へのリンクを選択します。\]](http://docs.aws.amazon.com/ja_jp/athena/latest/ug/images/connectors-updating-1.png)

1. **[関数]** ページの **[関数名]** 列で、コネクタの関数名を見つけて書き留めます。  
![\[関数名を書き留めます。\]](http://docs.aws.amazon.com/ja_jp/athena/latest/ug/images/connectors-updating-2.png)

1. 関数名のリンクを選択します。

1. **[関数の概要]** セクションで、**[構成]** タブを選択します。

1. 左側のペインで、**[環境変数]** をクリックします。

1. 「**環境変数**」セクションで、キーとそれに対応する値を見つけて書き留めます。

1. ページの上部までスクロールします。

1. メッセージ **[この関数はアプリケーションに属しています。] [管理するにはここをクリックししてください]** が表示されたら、**[ここをクリック]** リンクを選択してください。

1. 「**serverlessrepo-*your\$1application\$1name***」ページで、**serverlessrepo** を除いたアプリケーション名を見つけて書き留めてください。例えば、アプリケーション名が **serverlessrepo-DynamoDbTestApp** の場合、アプリケーション名は **DynamoDbTestApp** です。

1. アプリケーションの Lambda コンソールページを開いたままにして、**[使用しているコネクタのバージョンを確認]** のステップに進んでください。

## 使用しているコネクタのバージョンを確認する
<a name="connectors-updating-finding-the-version-that-you-are-using"></a>

使用しているコネクタのバージョンを確認するには、次のステップに従います。

**使用しているコネクタのバージョンを確認するには**

1. Lambda アプリケーションの Lambda コンソールページで、**[デプロイ]** タブを選択します。

1. **[デプロイ]** タブで、**[SAM テンプレート]** を展開します。

1. **CodeUri** を検索します。

1. **CodeUri** 下にある**[キー]** フィールドで、次の文字列を探します:

   ```
   applications-connector_name-versions-year.week_of_year.iteration_of_week/hash_number
   ```

   次の例は、CloudWatch コネクタの文字列を示しています:

   ```
   applications-AthenaCloudwatchConnector-versions-2021.42.1/15151159...
   ```

1. *年*.*年内の第 X 週*.*週内のイテレーション値*の値を記録します (例えば、**2021.42.1**)。これはお使いのコネクタのバージョンです。

## 新しいバージョンのコネクタをデプロイする
<a name="connectors-updating-deploying-the-new-version"></a>

新しいバージョンのコネクタをデプロイするには、次のステップに従います。

**新しいバージョンのコネクタをデプロイするには**

1. [https://console.aws.amazon.com/athena/](https://console.aws.amazon.com/athena/home) で Athena コンソールを開きます。

1. コンソールのナビゲーションペインが表示されない場合は、左側の展開メニューをクリックします。  
![\[展開メニューを選択します。\]](http://docs.aws.amazon.com/ja_jp/athena/latest/ug/images/nav-pane-expansion.png)

1. ナビゲーションペインで、**[データソースとカタログ]** を選択します。

1. **[データソースとカタログ]** ページで **[データソースを作成]** を選択します。

1. アップグレードするデータソースを選択し、**[次へ]** を選択します。

1. **[接続の詳細]** セクションで、**[Lambda 関数の作成]** を選択します。これにより、更新したアプリケーションをデプロイできる Lambda コンソールが開きます。  
![\[AWS Lambda コンソールのコネクタページ。\]](http://docs.aws.amazon.com/ja_jp/athena/latest/ug/images/connectors-updating-3.png)

1. 実際には新しいデータソースを作成していないため、[Athena コンソール] タブを閉じてかまいません。

1. コネクタの Lambda コンソールページで、次のステップを実行します:

   1. アプリケーション名から **serverlessrepo-** プレフィックスを削除したことを確認し、アプリケーション名を **[アプリケーション名]** フィールドにコピーします。

   1. Lambda 関数名を **[Athena カタログ名]** フィールドにコピーします。一部のコネクタでは、このフィールドを **[Lambda 関数名]** と呼んでいます。

   1. 記録した環境変数を対応するフィールドにコピーします。

1. **[このアプリがカスタム IAM ロールとリソースポリシーを作成することを承認します]** を選択した後、**[デプロイ]** を選択します。

1. アプリケーションが更新されたことを確認するには、**[デプロイ]** タブを選択します。

   **[デプロイ履歴]** セクションには、更新が完了したことが表示されます。  
![\[これでコネクタの更新が完了しました。\]](http://docs.aws.amazon.com/ja_jp/athena/latest/ug/images/connectors-updating-4.png)

1. 新しいバージョン番号を確認するには、以前と同様に **[SAM テンプレート]** を展開して **CodeUri** を検索し、コネクタのバージョン番号を **[キー]** フィールドで確認します。

これで、更新したコネクタを使用して Athena フェデレーティッドクエリを作成できるようになりました。