

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

# 建立資料來源連線
<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)
+ [將 ECR 映像提取至 AWS 您的帳戶](pull-ecr-customer-account.md)
+ [將您的連線註冊為 Glue Data Catalog](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/zh_tw/athena/latest/ug/images/nav-pane-expansion.png)

1. 在導覽窗格中，選擇**資料來源和目錄**。

1. 在**資料來源和目錄**頁面上，選擇**建立資料來源**。

1. 針對 **Choose a data source** (選擇資料來源)，請參考下列指導方針，選擇您希望 Athena 查詢的資料來源：
   + 選擇與您的資料來源對應的連線選項。使用 Athena 預先建置的資料來源連接器可以設定包括 MySQL、Amazon DocumentDB 和 PostgreSQL 在內的來源。
   + 如果想要查詢 Simple Storage Service (Amazon S3) 中的資料，而且沒有使用 Apache Hive 中繼存放區或此頁面上的其他任何一個聯合查詢資料來源選項，請選擇 **S3 - AWS Glue Data Catalog**。Athena 使用 AWS Glue Data Catalog 以將資料來源的中繼資料和結構描述資訊存放在 Simple Storage Service (Amazon S3) 中。這是預設的 (非聯合) 選項。如需詳細資訊，請參閱[使用 AWS Glue Data Catalog 連線到您的資料](data-sources-glue.md)。如需使用此工作流程的步驟，請參閱 [在 Athena 中註冊和使用資料目錄](gdc-register.md)。
   + 選擇 **S3 - Apache Hive metastore** (S3 - Apache Hive 中繼存放區) 可查詢使用 Apache Hive 中繼存放區的 Simple Storage Service (Amazon S3) 資料集。如需有關此選項的詳細資訊，請參閱 [將 Athena 連接至 Apache Hive 中繼存放區](connect-to-data-source-hive-connecting-athena-to-an-apache-hive-metastore.md)。
   + 如果想要建立用於 Athena 的資料來源連接器，請選擇 **Custom or shared connector** (自訂或共用連接器)。如需寫入資料來源連接器的相關資訊，請參閱[使用 Athena Query Federation SDK 開發資料來源連接器](connect-data-source-federation-sdk.md)。

1. 選擇**下一步**。

1. 在**輸入資料來源詳細資訊頁面**中，對於**資料來源名稱**，當您從 Athena 查詢資料來源時，請使用自動產生的名稱，或輸入要在 SQL 陳述式中使用的唯一名稱。名稱最多可包含 127 個字元，且在您的帳戶中必須是唯一的。建立後便無法變更。有效字元包括 a-z、A-Z、0-9、\$1 (底線)、@ (at 符號) 和 - (連字號)。Athena 已保留名稱 `awsdatacatalog`、`hive`、`jmx` 和 `system`，這些名稱不能用於資料來源名稱。

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 function** (Lambda 函數)，選擇 **Create Lambda function** (建立 Lambda 函數)。您所選連接器的函數頁面會在 AWS Lambda 主控台中開啟。此頁面包含連接器的詳細資訊。

   1. 在 **Application settings** (應用程式設定) 下，仔細閱讀每個應用程式設定的說明，然後輸入符合您需求的數值。

      您看到的應用程式設定會根據資料來源的連接器而有所不同。所需最低設定包括：
      + **AthenaCatalogName** – 小寫的 Lambda 函數名稱，表示其目標資料來源，例如 `cloudwatchlogs`。
      + **SpillBucket** – 您帳戶中的 Simple Storage Service (Amazon S3) 儲存貯體，存放超過 Lambda 函數回應大小限制的資料。
**注意**  
溢出的資料不會在後續執行中重複使用，並且可安全刪除。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 主控台的 **Resources** (資源) 區段中。

      將資料來源連接器部署到您的帳戶之後，即可使 Athena 與其連接。

   1. 返回 Athena 主控台的 **Enter data source details** (輸入資料來源) 頁面。

   1. 在 **Connection details** (連線詳細資訊) 區段中，選擇 **Select or enter a Lambda function** (選取或輸入 Lambda 函數) 搜尋方塊旁的重新整理圖示。

   1. 選擇您剛才在 Lambda 主控台中建立的函數名稱。隨即顯示 Lambda 函數的 ARN。

1. (選用) 在 **Tags** (標籤) 中，新增要與此資料來源相關聯的鍵值對。如需標籤的詳細資訊，請參閱[標記 Athena 資源](tags.md)。

1. 選擇**下一步**。

1. 在**檢閱和建立**頁面上，檢閱資料來源詳細資訊。若要進行變更，請選擇**編輯**。

1. 閱讀 **Athena 將在您的帳戶中建立資源**中的資訊。若您同意，請選取**我確認 Athena 會代表我建立資源**。

1. 選擇 **Create data source (建立資料來源)**。**Athena ** 將為您建立下列資源。
   + Lambda 執行 IAM 角色
   + AWS Glue connection （僅當資料來源與 AWS Glue Connections 相容時）
   + Lambda 函式

該頁面的 **Data source details** (資料來源詳細資訊) 區段顯示了有關新連接器的資訊。您現在可以在 Athena 查詢中使用此連接器。

如需有關在查詢中使用資料連接器的資訊，請參閱 [執行聯合查詢](running-federated-queries.md)。

# 使用 AWS Serverless Application Repository 部署資料來源連接器
<a name="connect-data-source-serverless-app-repo"></a>

若要部署資料來源連接器，可以使用 [AWS Serverless Application Repository](https://aws.amazon.com/serverless/serverlessrepo/)，而不是使用 AWS Glue 連線。

**注意**  
我們建議您，僅在擁有自訂連接器或需要使用較舊的連接器時才使用 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 IAM roles or resource policies** (顯示建立自訂 IAM 角色或資源政策的應用程式)。

1. 在搜尋方塊中，輸入連接器的名稱。如需預先建置的 Athena 資料連接器之清單，請參閱[可用資料來源連接器](connectors-available.md)。

1. 選擇連接器的名稱。在 AWS Lambda 主控台中選擇連接器會開啟 Lambda 函數的 **Application details** (應用程式詳細資訊) 頁面。

1. 在此詳細資訊頁面右側的 **Application settings (應用程式設定)** 中，輸入必要資訊。至少需設定下列內容。如需 Athena 所建立之資料連接器的其餘可設定選項的相關資訊，請參閱 GitHub 上相關的[可用的連接器](https://github.com/awslabs/aws-athena-query-federation/wiki/Available-Connectors)主題。
   + **AthenaCatalogName** – 小寫的 Lambda 函數名稱，表示其目標資料來源，例如 `cloudwatchlogs`。
   + **SpillBucket** – 指定您帳戶中用來接收所有大型回應承載資料 (超過 Lambda 函數回應大小限制的資料) 的 Simple Storage Service (Amazon S3) 儲存貯體。

1. 選擇 **I acknowledge that this app creates custom IAM roles and resource policies** (我認可此應用程式建立自訂的 IAM 角色和資源政策)。如需詳細資訊，請選擇 **Info (資訊)** 連結。

1. 在 **Application settings** (應用程式設定) 部分的右下方，選擇 **Deploy** (部署)。部署完成後，Lambda 函數會出現在 Lambda 主控台的 **Resources** (資源) 區段中。

## 使連接器可供 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/zh_tw/athena/latest/ug/images/nav-pane-expansion.png)

1. 在導覽窗格中，選擇**資料來源和目錄**。

1. 在**資料來源和目錄**頁面上，選擇**建立資料來源**。

1. 針對 **Choose a data source** (選擇資料來源)，選擇您在 AWS Serverless Application Repository中為其建立連接器的資料來源。本教學使用 **Amazon CloudWatch Logs** 作為聯合資料來源。

1. 選擇**下一步**。

1. 在 **Enter data source details** (輸入資料來源詳細資訊) 頁面中，當您從 Athena 查詢資料來源 (例如 `CloudWatchLogs`)，請於 **Data Source Name** (資料來源名稱) 輸入要在 SQL 陳述式中使用的名稱。名稱最多可包含 127 個字元，且在您的帳戶中必須是唯一的。建立後便無法變更。有效字元包括 a-z、A-Z、0-9、\$1 (底線)、@ (at 符號) 和 - (連字號)。Athena 已保留名稱 `awsdatacatalog`、`hive`、`jmx` 和 `system`，這些名稱不能用於資料來源名稱。

1. 在 **Connection details** (連線詳細資訊) 區段中，使用 **Select or enter a Lambda function** (選取或輸入 Lambda 函數) 方塊，以選擇您剛才建立的函數名稱。隨即顯示 Lambda 函數的 ARN。

1. (選用) 在 **Tags** (標籤) 中，新增要與此資料來源相關聯的鍵值對。如需標籤的詳細資訊，請參閱[標記 Athena 資源](tags.md)。

1. 選擇**下一步**。

1. 在 **Review and create** (檢閱並建立) 頁面上，檢閱資料來源詳細資訊，然後選擇 **Create data source** (建立資料來源)。

1. 該頁面的 **Data source details** (資料來源詳細資訊) 區段顯示了有關新連接器的資訊。您現在可以在 Athena 查詢中使用此連接器。

   如需有關在查詢中使用資料連接器的資訊，請參閱 [執行聯合查詢](running-federated-queries.md)。

# 為資料來源連接器或 AWS Glue 連線建立 VPC
<a name="athena-connectors-vpc-creation"></a>

有些 Athena 資料來源連接器和 AWS Glue 連線需要 VPC 和安全群組。本主題將說明如何建立具有子網路的 VPC 和 VPC 的安全群組。在此程序中，您可擷取您建立的 VPC、子網路和安全群組的 ID。當您設定 AWS Glue 連線或資料來源連接器以與 Athena 搭配使用時，需要這些 IDs。

**為 Athena 資料來源連接器建立 VPC**

1. 登入 AWS 管理主控台 ，並在 [https://console.aws.amazon.com/vpc/](https://console.aws.amazon.com/vpc/)：// 開啟 Amazon VPC 主控台。

1. 選擇**建立 VPC**。

1. 在**建立 VPC** 頁面的 **VPC 設定**下，針對**要建立的資源**，選擇 **VPC 和更多**。

1. 在**自動產生名稱標籤**下，針對**自動產生**，輸入將用於為 VPC 中的所有資源產生名稱標籤的值。

1. 選擇**建立 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) 以供日後參考。

## 搭配使用 VPC 與 Athena 連接器時的重要考量事項
<a name="vpc-warning-instructions"></a>

由於所有連接器都可以使用 VPC，因此下列說明適用於所有 Athena 連接器。

**注意**  
搭配 Glue AWS 連線使用 VPC 時，您需要設定下列 PrivateLink 端點：  
Amazon S3
AWS Glue
AWS Secrets Manager

或者，您可以使用公有網際網路存取，但基於安全理由，不建議這麼做。

**警告**  
使用公有網際網路存取可能會讓您的資源面臨額外的安全風險。為增強安全性，強烈建議在 VPC 組態中使用 PrivateLink 端點。

# 將 ECR 映像提取至 AWS 您的帳戶
<a name="pull-ecr-customer-account"></a>

Athena Federation Connector Lambda 函式會使用存放在 Athena 受管 Amazon ECR 儲存庫中的容器映像。若要在這些容器映像上執行安全掃描，您必須先將其複製到帳戶中的 Amazon ECR 儲存庫。本節提供如何將映像複製到您的儲存庫，並設定 Lambda 函式以使用映像的逐步說明。

## 先決條件
<a name="pull-ecr-customer-account-prereq"></a>
+ Athena Federation Connector – 該連接器可以透過任何來源建立，前提是其使用了容器映像。
**注意**  
若要驗證映像部署，請檢查 Athena Federation Connector Lambda 中的映像索引標籤
+ Docker 已安裝且在執行中
+ AWS CLI 已安裝
+ 具有適當提取許可的帳戶憑證

## 如何傳輸映像
<a name="image-transfer-procedure"></a>

1. 從 Athena Federation Connector 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 Federation Connector：

   1. 導覽至您的 Lambda 函式

   1. 選取**部署新映像**

   1. 輸入您的新映像 URI

   Athena 聯合連接器映像現在位於您的帳戶中，可讓您在映像上執行 CVE 掃描。

# 將您的連線註冊為 Glue Data Catalog
<a name="register-connection-as-gdc"></a>

建立資料來源之後，您可以使用 Athena 主控台，將您的連線註冊為 Glue Data Catalog。註冊後，您可以使用 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 開發人員指南》中的[將 Data Catalog 連接到外部資料來源的先決條件](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 Data Catalog**

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. 選擇 **Lake Formation IAM 角色**，其中該角色可授予 Lake Formation 調用 Lambda 函式的許可。請確保角色具有許可，如[範例](#register-connection-as-gdc-pre)所示。

1. 在文字方塊中，輸入 **confirm** 以刪除 Athena 資料來源，並將其取代為 Glue 資料目錄註冊。
**注意**  
此動作會刪除您的 Athena 資料來源，並在其位置建立新的 Glue Data Catalog。此程序完成後，您可能需要更新存取資料來源的查詢，以改為參考新建立的 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 函數的回應超過 6 MB 的 Lambda 回應大小限制，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 應將[資源型政策](https://docs.aws.amazon.com/lambda/latest/dg/access-control-resource-based.html)新增至 Lambda 函數中，並將[主體](https://docs.aws.amazon.com/AmazonS3/latest/userguide/access-policy-language-overview.html)存取權限新增至 Amazon S3 中的溢出儲存貯體。

1. 以下政策向帳戶 B 授予帳戶 A 中 Lambda 函數的 Lambda 叫用函數許可。

------
#### [ 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 函數使用 AWS KMS 金鑰加密溢出儲存貯體，而不是聯合 SDK 提供的預設加密，帳戶 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 共用其連接器，帳戶 B 必須透過呼叫 AWS 安全字符服務 [AssumeRole](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html) API 動作來建立名為`AthenaCrossAccountCreate-account-A-id`帳戶 A 擔任的角色。

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. 將允許 `CreateDataCatalog` 動作的政策新增至您使用帳戶 B 建立的 `AthenaCrossAccountCreate-account-A-id` 角色。

## 與帳戶 B 共享帳戶 A 中的資料來源
<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)。

**與帳戶 B 共用帳戶 A 中的 Lambda 資料來源**

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. 選擇**資料來源和目錄**。

1. 在**資料來源和目錄**頁面上，選擇您要共用的連接器連結。

1. 在 Lambda 資料來源的詳細資訊頁面上，從右上角的**動作**功能表，選擇**共用**。

1. 在**與另一個帳戶共用 *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. 在**選擇資料來源**頁面上，選擇**自訂或共用連接器**。

1. 選擇**下一步**。

1. 在**輸入資料來源詳細資訊**頁面的**連線詳細資訊**區段中，針對**選取或輸入 Lambda 函式**，輸入帳戶 A 的 Lambda ARN。

1. 選擇**下一步**。

1. 在**檢閱和建立**頁面上，選擇**建立資料來源**。

## 疑難排解
<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** *year*.*week\$1of\$1year*.*iteration\$1of\$1week* **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 函式中，找到 ImageURI 並將標籤更新為所需的版本。例如：

   從：

   ```
   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** *year*.*week\$1of\$1year*.*iteration\$1of\$1week* **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/zh_tw/athena/latest/ug/images/nav-pane-expansion.png)

1. 在導覽窗格中，選擇**資料來源和目錄**。

1. 在**資料來源名稱**資料欄中，選擇連接器資料來源的連結。

1. 在 **資料來源詳細資訊**區段的 **Lambda 函數**下，選擇 Lambda 函數的連結。  
![\[選擇 Lambda 函數的連結。\]](http://docs.aws.amazon.com/zh_tw/athena/latest/ug/images/connectors-updating-1.png)

1. 在**函數**頁面的**函數名稱**資料欄中，記下連接器的函數名稱。  
![\[記下函數名稱。\]](http://docs.aws.amazon.com/zh_tw/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. 記錄 *year*.*week\$1of\$1year*.*iteration\$1of\$1week* 的值 (例如 **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/zh_tw/athena/latest/ug/images/nav-pane-expansion.png)

1. 在導覽窗格中，選擇**資料來源和目錄**。

1. 在**資料來源和目錄**頁面上，選擇**建立資料來源**。

1. 選擇您想要升級的資料來源，然後選擇**下一步**。

1. 在**連線詳細資訊**區段中，選擇**建立 Lambda 函數**。這會開啟 Lambda 主控台，您將能在其中部署更新的應用程式。  
![\[AWS Lambda 主控台中的連接器頁面。\]](http://docs.aws.amazon.com/zh_tw/athena/latest/ug/images/connectors-updating-3.png)

1. 由於您實際上並未建立新的資料來源，因此您可以關閉 Athena 主控台索引標籤。

1. 在連接器的 Lambda 主控台頁面上，執行以下步驟：

   1. 請確定您已從應用程式名稱中移除 **serverlessrepo-** 字首，然後將應用程式名稱複製到**應用程式名稱**欄位。

   1. 將您的 Lambda 函數名稱複製到 **AthenaCatalogName** 欄位。某些連接器將此欄位稱為 **LambdaFunctionName**。

   1. 將您記錄的環境變數複製到其對應欄位中。

1. 選擇選項**我認可此應用程式建立自訂的 IAM 角色和資源政策**，然後選擇**部署**。

1. 若要確認您的應用程式是否已更新，請選擇**部署**索引標籤。

   **部署歷史記錄**區段會顯示您的更新已完成。  
![\[連接器更新已完成。\]](http://docs.aws.amazon.com/zh_tw/athena/latest/ug/images/connectors-updating-4.png)

1. 若要確認新的版本編號，您可以像以前一樣展開 **SAM 範本**，尋找 **CodeUri**，然後在**索引鍵**欄位中檢查連接器版本編號。

您現在可以使用更新的連接器來建立 Athena 聯合查詢。