

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

# 在 中聯合到外部資料來源 AWS Glue Data Catalog
<a name="federated-catalog-data-connection"></a>

 您可以將 AWS Glue Data Catalog (Data Catalog) 連接到資料倉儲，例如 Amazon Redshift、Snowflake、Amazon RDS 等雲端資料庫 Amazon DynamoDB、Oracle 和 Amazon MSK 等串流服務，以及使用 AWS Glue 連線的 Teradata 等內部部署系統。這些連線存放在 中， AWS Glue Data Catalog 並使用 註冊 AWS Lake Formation，可讓您為每個可用的資料來源建立聯合目錄。

 *聯合目錄*是指向外部資料系統中資料庫的最上層容器。它可讓您直接從外部資料系統查詢資料，而無需擷取、轉換和載入 (ETL) 程序。

如需 AWS Glue 連線的詳細資訊，請參閱《 AWS Glue 開發人員指南》中的[連線至資料](https://docs.aws.amazon.com/glue/latest/dg/glue-connections.html)。

資料湖管理員可以使用 [Amazon SageMaker Lakehouse ](https://docs.aws.amazon.com/sagemaker-unified-studio/latest/userguide/lakehouse.html)或 建立聯合目錄[Amazon Athena](https://docs.aws.amazon.com/athena/latest/ug/connect-to-a-data-source.html)。

然後，資料湖管理員可以使用 Lake Formation 授予目錄內物件的精細許可，控制目錄、資料庫、資料表、資料欄、資料列或儲存格等各種層級的存取。資料分析師可以使用 Athena 來探索和查詢目錄化資料來源，其中 Lake Formation 會強制執行定義的存取政策。分析師可以在單一查詢中跨多個來源聯結資料，而不需要個別連線到每個來源。

**Topics**
+ [工作流程](#connect-data-source-workflow)
+ [將 Data Catalog 連線至外部資料來源的先決條件](connect-data-source-prerequisites.md)
+ [使用 AWS Glue 連線建立聯合目錄](create-fed-catalog-data-source.md)
+ [檢視目錄物件](view-fed-glue-connection-catalog.md)
+ [刪除聯合目錄](delete-glue-fed-catalog.md)
+ [查詢聯合目錄](query-glue-fed-catalog.md)
+ [其他資源](additional-resources-fed-connection.md)

## 工作流程
<a name="connect-data-source-workflow"></a>

具有必要許可的資料湖管理員或使用者會完成以下步驟，以將 AWS Glue Data Catalog 連線至外部資料來源。

1.  建立與資料來源的 AWS Glue 連線。當您註冊連線時，用於註冊連線的 IAM 角色必須能夠存取 Lambda 函數和 Amazon S3 溢出儲存貯體位置。

1.  向 Lake Formation 註冊連線。

1.  使用連線至可用資料來源的 AWS Glue 連線，在 Data Catalog 中建立聯合目錄。資料庫、資料表和檢視會自動編目在 Data Catalog 中，並向 Lake Formation 註冊。

1.  使用 Lake Formation 許可，將特定目錄、資料庫和資料表的存取權授予資料分析師。您可以使用 Lake Formation 跨資料湖、倉儲和 OLTP 來源定義精細存取控制政策，以啟用資料列層級和資料欄層級的安全篩選條件。

    然後，資料分析師可以使用 Athena 中的 SQL 查詢透過 Data Catalog 存取所有資料，而無需單獨的連線或資料來源憑證。分析師可以執行聯合 SQL 查詢，從多個來源掃描資料，將資料加入到就地，而不需要複雜的資料管道。

# 將 Data Catalog 連線至外部資料來源的先決條件
<a name="connect-data-source-prerequisites"></a>

若要將 AWS Glue Data Catalog 連線至外部資料來源、向 Lake Formation 註冊連線，以及設定聯合目錄，您需要完成下列要求：
**注意**  
我們建議 Lake Formation 資料湖管理員建立連線至外部資料來源的 AWS Glue 連線，並建立聯合目錄。

1. 

**建立 IAM 角色。**
   +  建立具有必要許可的角色，以部署建立與外部資料來源連線所需的資源 (Lambda 函數、Amazon S3 溢出儲存貯體、IAM 角色和 AWS Glue 連線）。
   + 建立具有必要最低許可的角色來存取 AWS Glue 連線屬性 (Lambda 函數和 Amazon S3 溢出儲存貯體）。這是您在向 Lake Formation 註冊連線時將包含的角色。

     若要使用 Lake Formation 來管理和保護資料湖中的資料，您必須向 Lake Formation 註冊 AWS Glue 連線。藉由這樣做，Lake Formation 可以將登入資料提供給 Amazon Athena 以查詢聯合資料來源。

     角色必須具有 Amazon S3 儲存貯體和 Lambda 函數的 `Select`或 `Describe`許可。
     +  s3:ListBucket 
     + s3:GetObject
     +  lambda:InvokeFunction 

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

****  

     ```
     {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
         {
           "Effect": "Allow",
           "Action": [
             "s3:*"
           ],
           "Resource": [
             "arn:aws:s3:::amzn-s3-demo-bucket1/object/*",
             "arn:aws:s3:::amzn-s3-demo-bucket1/object"
           ]
         },
         {
           "Sid": "lambdainvoke",
           "Effect": "Allow",
           "Action": "lambda:InvokeFunction",
           "Resource": "arn:aws:lambda:us-east-1:123456789012:function:example-lambda-function"
         },
         {
           "Sid": "gluepolicy",
           "Effect": "Allow",
           "Action": "glue:*",
           "Resource": "*"
         }
       ]
     }
     ```

------
   + 將下列信任政策新增至用於註冊連線的 IAM 角色：

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

****  

     ```
     {
         "Version":"2012-10-17",		 	 	 
         "Statement": [
             {
                 "Effect": "Allow",
                 "Principal": {
                     "Service": [
                         "lakeformation.amazonaws.com"
                   ]
                 },
                 "Action": "sts:AssumeRole"
             }
         ]
     }
     ```

------
   + 註冊連線的資料湖管理員必須具有角色的 `iam:PassRole` 許可。

     以下是授予此許可的內嵌政策。將 *<account-id>* 取代為有效的 AWS 帳號，並將 *<role-name>* 取代為角色的名稱。

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

****  

     ```
     {
         "Version":"2012-10-17",		 	 	 
         "Statement": [
             {
                 "Sid": "PassRolePermissions",
                 "Effect": "Allow",
                 "Action": [
                     "iam:PassRole"
                 ],
                 "Resource": [
                     "arn:aws:iam::111122223333:role/example-role-name>"
                 ]
             }
         ]
     }
     ```

------
   +  若要在 Data Catalog 中建立聯合目錄，請確認您使用的 IAM 角色是 Lake Formation 資料湖管理員，方法是檢查資料湖設定 (`aws lakeformation get-data-lake-settings`)。

      如果您不是資料湖管理員，則需要 Lake Formation `CREATE_CATALOG`許可才能建立目錄。下列範例顯示如何授予建立目錄所需的許可。

     ```
     aws lakeformation grant-permissions \
     --cli-input-json \
             '{
                 "Principal": {
                  "DataLakePrincipalIdentifier":"arn:aws:iam::123456789012:role/non-admin"
                 },
                 "Resource": {
                     "Catalog": {
                     }
                 },
                 "Permissions": [
                     "CREATE_CATALOG",
                     "DESCRIBE"
                 ]
             }'
     ```

1.  AWS KMS 如果您使用客戶受管金鑰來加密資料來源中的資料，請將下列金鑰政策新增至金鑰。將帳號取代為有效的 AWS 帳號，並指定角色名稱。根據預設，資料會使用 KMS 金鑰加密。Lake Formation 提供了一個可建立用於加密的自訂 KMS 金鑰的選項。如果您使用客戶受管金鑰，則必須將特定金鑰政策新增至金鑰。

   如需有關管理客戶受管金鑰的許可的詳細資訊，請參閱[客戶受管金鑰](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk)。

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

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Action": [
                   "kms:Encrypt",
                   "kms:Decrypt",
                   "kms:ReEncrypt*",
                   "kms:GenerateDataKey*",
                   "kms:DescribeKey"
               ],
               "Resource": "arn:aws:kms:us-east-1:123456789012:key/key-1"
           }
       ]
   }
   ```

------

# 使用 AWS Glue 連線建立聯合目錄
<a name="create-fed-catalog-data-source"></a>

 若要將 AWS Glue Data Catalog 連接到外部資料來源，您需要使用 AWS Glue 啟用與外部資料來源通訊的連線。您可以使用 AWS Glue 主控台、建立 AWS Glue 連線 API 和 Amazon SageMaker Lakehouse 主控台[來建立連線](https://docs.aws.amazon.com/glue/latest/webapi/API_CreateConnection.html)。

如需建立 AWS Glue 連線的逐步說明，請參閱《 AWS Glue 開發人員指南》中的[連線至資料](https://docs.aws.amazon.com/glue/latest/dg/glue-connections.html)或在 [Amazon SageMaker Lakehouse 中建立連線](https://docs.aws.amazon.com/sagemaker-unified-studio/latest/userguide/lakehouse-create-connection.html)。

當使用者對聯合資料表執行查詢時，Lake Formation 會提供登入資料，以叫用 AWS Glue 連線中指定的 AWS Lambda 函數，從資料來源擷取中繼資料物件。

------
#### [ AWS 管理主控台 ]

**從外部資料來源建立聯合目錄並設定許可 （主控台）**

1. 開啟 Lake Formation 主控台，網址為 [https://console.aws.amazon.com/lakeformation/](https://console.aws.amazon.com/lakeformation/)。

1. 在導覽窗格中，選擇 Data **Catalog **下的目錄。 ****

1. 選取**建立目錄**選項。

1. 在**設定目錄**詳細資訊頁面上，輸入下列資訊：  
![\[具有 選項的建立目錄頁面。\]](http://docs.aws.amazon.com/zh_tw/lake-formation/latest/dg/images/create-glue-connection-catalog.png)
   + **名稱** – 聯合目錄的唯一名稱。名稱無法變更，且必須為小寫。名稱最多可包含 255 個字元。 帳戶。
   + **類型** – 選擇聯合目錄作為目錄類型。
   + **來源** – 從下拉式清單中選擇資料來源。隨即顯示您已為其建立連線的資料來源。如需建立外部資料來源 AWS Glue 連線的詳細資訊，請參閱《 AWS Glue 開發人員指南》中的[為連接器建立連線](https://docs.aws.amazon.com/glue/latest/dg/creating-connections.html)或在 [Amazon SageMaker Lakehouse 中建立連線](https://docs.aws.amazon.com/sagemaker-unified-studio/latest/userguide/lakehouse-create-connection.html)。
   + **連線** – 選擇現有的資料來源 AWS Glue 連線。
   + **描述** – 輸入從資料來源建立之目錄的描述。

1. 選擇 Lake Formation 的 **IAM 角色**，以擔任 ，為查詢引擎提供登入資料，以從資料來源存取資料。此角色必須具備必要的許可，才能存取 AWS Glue 連線並叫用 Lambda 函數，才能從外部資料來源存取資料。

   您也可以在 IAM 主控台中**建立新的角色**。

   如需必要的許可，請參閱 [將 Data Catalog 連線至外部資料來源的先決條件](connect-data-source-prerequisites.md)一節。

1.  選取 選項 **啟用連接器以連接至資料來源**，讓 Athena 執行聯合查詢。

   如需支援的連接器清單，請參閱《Amazon Athena 使用者指南》中的[註冊您的連線](https://docs.aws.amazon.com/athena/latest/ug/register-connection-as-gdc.html)。

1. **加密選項** – 如果您想要使用自訂金鑰來加密目錄，請選擇**自訂加密設定**選項。若要使用自訂金鑰，您必須將其他自訂受管金鑰政策新增至 KMS 金鑰。

1. 選擇**下一步**，將許可授予其他委託人。

1. 在**授予許可**頁面上，選擇**新增許可**。

1.  在**新增許可**畫面上，選擇要授予的委託人和許可類型。  
![\[具有委託人類型和授予選項的目錄許可頁面。\]](http://docs.aws.amazon.com/zh_tw/lake-formation/latest/dg/images/catalog-permissions.png)
   +  在**主體**區段中，選擇主體類型，然後指定要授予權限的主體。
     + **IAM 使用者和角色**：從 IAM 使用者和角色清單中，選擇一或多名使用者或角色。
     + **SAML 使用者和群組** – 對於 SAML 和 Amazon Quick 使用者和群組，為透過 SAML 聯合的使用者或群組輸入一或多個 Amazon Resource Name (ARNs)，或為 Amazon Quick 使用者或群組輸入 ARNs。在每個 ARN 後按下 **Enter** 鍵。
   +  在**許可**區段中，選取權限和可授予的權限。

     在**目錄權限**下，選取要授予的一或多個權限。

     選擇**超級使用者**，針對目錄中的所有資源授予不受限制的管理權限。

      在**授予許可**下，選取授予收件人可以授予其 AWS 帳戶中其他委託人的許可。當您從外部帳戶授予 IAM 主體權限時，此選項不受支援。

1. 選擇**下一步**以檢閱資訊並建立目錄。**目錄**清單顯示新的聯合目錄。

   **資料位置**清單會顯示新註冊的聯合連線。  
![\[資料位置清單包含聯合連線。\]](http://docs.aws.amazon.com/zh_tw/lake-formation/latest/dg/images/federated_data_lake_location.png)

------
#### [ AWS CLI ]

**從外部資料來源建立聯合目錄並設定許可**

1.  下列範例示範如何建立 AWS Glue 連線。

   ```
   aws glue create-connection 
     --connection-input \
         '{
            "Name": "DynamoDB connection",
            "ConnectionType": "DYNAMODB",
            "Description": "A connection created for DynamoDB",
            "ConnectionProperties": {},
            "AthenaProperties": "spill_prefix": "your_spill_prefix",
            "lambda_function_arn": "Lambda_function_arn",
            "spill_bucket": "Your_Bucket_name",
            "AuthenticationConfiguration": {}
         }'
   ```

1.  下列範例示範如何向 Lake Formation 註冊 AWS Glue 連線。

   ```
   aws lakeformation register-resource 
     --cli-input-json \
       {"ResourceArn":"arn:aws:glue:us-east-1:123456789012:connection/dynamo","RoleArn":"arn:aws:iam::123456789012:role/AdminTelemetry","WithFederation":true}
   ```

1.  下列範例示範如何建立聯合目錄。

   ```
   aws glue create-catalog 
    --cli-input-json \
         '{
          "Name":"ddbcatalog",
          "CatalogInput":{"CatalogProperties":{"DataLakeAccessProperties":{"DataTransferRole":"arn:aws:iam::123456789012:role/role name"}},
          "CreateDatabaseDefaultPermissions":[],
          "CreateTableDefaultPermissions":[],
          "FederatedCatalog":{"ConnectionName":"dynamo","Identifier":"dynamo"}
            }
          }'
   ```

------

# 檢視目錄物件
<a name="view-fed-glue-connection-catalog"></a>

對於每個可用的資料來源， 會在 中 AWS Glue 建立對應的目錄 AWS Glue Data Catalog。建立目錄之後，您可以使用 Lake Formation 主控台或 檢視目錄中的資料庫和資料表 AWS CLI。用於 

1. 開啟 Lake Formation 主控台，網址為 [https://console.aws.amazon.com/lakeformation/](https://console.aws.amazon.com/lakeformation/)。

1. 在資料**目錄**下選擇目錄。目錄頁面會顯示您擁有許可的目錄。  
![\[檢視目錄。\]](http://docs.aws.amazon.com/zh_tw/lake-formation/latest/dg/images/view-catalogs.png)

1. 從清單中選擇目錄，以檢視目錄中包含的資料庫和資料表。此清單包含您帳戶中的資料庫和資源連結，這些是外部帳戶中共用資料庫和資料表的連結，用於跨帳戶存取資料湖中的資料。  
![\[檢視目錄/資料庫。\]](http://docs.aws.amazon.com/zh_tw/lake-formation/latest/dg/images/catalog-database-view.png)

1. 選擇**檢視**下的**資料表**選項，以檢視和管理資料庫中的資料表。

****AWS CLI 檢視目錄和資料庫的範例****  
下列範例示範如何使用 來檢視目錄 AWS CLI 

```
aws glue get-catalog \
--catalog-id 123456789012:dynamodbcatalog
```

下列範例顯示如何請求帳戶中的所有目錄。

```
aws glue get-catalogs \
 --recursive
```

下列範例請求顯示如何取得 目錄中的資料庫。

```
aws glue get-database \
--catalog-id 123456789012:dynamodbcatalog
--database-name database name
```

# 刪除聯合目錄
<a name="delete-glue-fed-catalog"></a>

 您可以使用 AWS Glue Data Catalog `glue:DeleteCatalog`操作或 AWS Lake Formation 主控台刪除您在 中建立的聯合目錄。

**刪除聯合目錄 （主控台）**

1. 開啟 Lake Formation 主控台，網址為 [https://console.aws.amazon.com/lakeformation/](https://console.aws.amazon.com/lakeformation/)。

1. 在導覽窗格中，選擇資料**目錄**下的目錄。 ****

1. 從目錄清單中選擇要刪除的目錄。

1. 選擇從**動作****刪除**。

1. 選擇**捨**棄以確認，聯合目錄將從資料目錄中刪除。  
![\[刪除目錄確認。\]](http://docs.aws.amazon.com/zh_tw/lake-formation/latest/dg/images/delete-fed-catalog.png)

**刪除聯合目錄 (CLI)**
+ 

  ```
  aws glue delete-catalog 
    --catalog-id 123456789012:catalog name
  ```

# 查詢聯合目錄
<a name="query-glue-fed-catalog"></a>

將許可授予其他主體之後，他們可以使用 Athena 登入並開始查詢聯合目錄中的資料表。

若要在聯合資料庫中建立和刪除資料表，委託人必須具有 Lake Formation `Create table`、 `Drop`許可。

 如需授予 Data Catalog 許可的詳細資訊，請參閱 [授予 Data Catalog 資源的許可](granting-catalog-permissions.md)。

如需從 查詢資料目錄的詳細資訊 Amazon Athena，請參閱《Amazon Athena 使用者指南》中的[AWS Glue Data Catalog 從 查詢 Amazon Athena](https://docs.aws.amazon.com/athena/latest/ug/gdc-register.html)。

# 其他資源
<a name="additional-resources-fed-connection"></a>

 在此部落格文章中，我們展示資料分析師如何透過單一、統一的體驗，安全地存取和查詢存放在 S3 資料湖外部的資料，包括 Amazon Redshift 資料倉儲和 Amazon DynamoDB 資料庫。管理員現在可以以不同層級的精細程度套用存取控制，以確保敏感資料在擴展資料存取時仍受到保護。這可讓組織加速資料計畫，同時維護安全性和合規性，進而加快資料驅動的決策速度。
+ [ 使用 Amazon SageMaker Lakehouse 編目和管理 Amazon Athena 聯合查詢 Amazon SageMaker ](https://aws.amazon.com/blogs/big-data/catalog-and-govern-amazon-athena-federated-queries-with-amazon-sagemaker-lakehouse/)