

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

# 建立 AWS Glue 連線 （適用於管理員）
<a name="sagemaker-sql-extension-datasources-glue-connection"></a>

若要搭配 SQL 擴充功能使用資料來源，管理員可以為每個資料來源設定 AWS Glue 連線。這些連線會存放必要的組態詳細資訊，以存取資料來源並與其互動。一旦建立了連線並授予[適當的許可](sagemaker-sql-extension-datasources-connection-permissions.md)，共用相同執行角色的 [Amazon SageMaker Studio 空間](studio-updated-spaces.md) 的所有使用者都可看見連線。

若要建立這些連線：
+ 首先，建立一個 JSON 檔案，定義每個資料來源的連線屬性。JSON 檔案包含詳細資訊，例如資料來源識別符、存取登入資料和其他相關的組態參數，以透過 AWS Glue 連線存取資料來源。
+ 然後使用 AWS Command Line Interface (AWS CLI) 建立 AWS Glue 連線，並將 JSON 檔案做為參數傳遞。 AWS CLI 命令會從 JSON 檔案讀取連線詳細資訊，並建立適當的連線。
**注意**  
SQL 延伸模組僅支援使用 AWS CLI 建立連線。

建立 AWS Glue 連線之前，請確定您完成下列步驟：
+ 安裝和設定 AWS Command Line Interface (AWS CLI)。如需如何安裝和設定 的詳細資訊 AWS CLI，請參閱[關於第 2 AWS CLI 版](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html)。確保用於設定 之 IAM 使用者或角色的存取金鑰和字符 AWS CLI 具有建立 AWS Glue 連線所需的許可。否則，新增一個允許 `glue:CreateConnection` 動作的政策。
+ 了解如何使用 AWS Secrets Manager。我們建議您使用 Secrets Manager 為資料存放區提供連線憑證和任何其他敏感資訊。如需使用 Secrets Manager 存放登入資料的詳細資訊，請參閱在 [AWS Secrets Manager 中存放連線登入](https://docs.aws.amazon.com/glue/latest/dg/connection-properties-secrets-manager.html)資料。

## 建立連線定義 JSON 檔案
<a name="sagemaker-sql-extension-glue-connection-config"></a>

若要建立 AWS Glue 連線定義檔案，請建立 JSON 檔案來定義已安裝和設定 之機器上的連線詳細資訊 AWS CLI。針對此範例，將檔案命名為 `sagemaker-sql-connection.json`。

連線定義檔案應遵循下列一般格式：
+ **Name** 是連線的名稱。
+ **Description** 是連線的文字描述。
+ **ConnectionType** 是連線的類型。選擇 `REDSHIFT`、`ATHENA` 或 `SNOWFLAKE`。
+ **ConnectionProperties** 是連線屬性的鍵值對映射，例如 AWS 秘密的 ARN 或資料庫的名稱。

```
{
    "ConnectionInput": {
        "Name": <GLUE_CONNECTION_NAME>,
        "Description": <GLUE_CONNECTION_DESCRIPTION>,
        "ConnectionType": "REDSHIFT | ATHENA | SNOWFLAKE",
        "ConnectionProperties": {
            "PythonProperties": "{\"aws_secret_arn\": <SECRET_ARN>, \"database\": <...>}"
        }
    }
}
```

**注意**  
`ConnectionProperties` 金鑰內的屬性由字串化金鑰/值對組成。以反斜線 (`\`) 字元逸出金鑰或值中使用的任何雙引號。
Secrets Manager 中可用的所有屬性也可以直接透過 `PythonProperties` 提供。不過，不建議在 `PythonProperties` 中包含密碼等敏感欄位。反之，偏好的方法是使用 Secrets Manager。

您可以在下列各節中找到不同資料存放區特有的連線定義檔案。

每個資料來源的連線定義檔案都包含從 SQL 延伸模組連線至這些資料存放區所需的特定屬性和組態。如需定義與該來源連線的詳細資訊，請參閱適當的一節。
+ 若要建立 Amazon Redshift 的 AWS Glue 連線，請參閱 中的範例定義檔案[設定 Amazon Redshift 的 AWS Glue 連線](#sagemaker-sql-extension-redshift-glue-connection-config)。
+ 若要建立 Amazon Athena 的 AWS Glue 連線，請參閱 中的範例定義檔案[設定 Athena 的 AWS Glue 連線](#sagemaker-sql-extension-athena-glue-connection-config)。
+ 若要建立 Snowflake 的 AWS Glue 連線，請參閱 中的範例定義檔案[設定 Snowflake 的 AWS Glue 連線](#sagemaker-sql-extension-snowflake-glue-connection-config)。

### 設定 Amazon Redshift 的 AWS Glue 連線
<a name="sagemaker-sql-extension-redshift-glue-connection-config"></a>

本節提供有關 Amazon Redshift 特定 JSON 定義檔案中秘密和連線屬性的詳細資訊。在建立您的連線組態檔案之前，建議您將 Amazon Redshift 存取憑證儲存為 Secrets Manager 中的秘密。或者，您可以根據透過 AWS Identity and Access Management (IAM) 許可政策授予的許可來產生臨時資料庫登入資料，以管理使用者對 Amazon Redshift 資料庫的存取。如需詳細資訊，請參閱[使用 IAM 身分驗證產生資料庫使用者登入資料](https://docs.aws.amazon.com/redshift/latest/mgmt/generating-user-credentials.html)。

#### 建立 Amazon Redshift 存取憑證的機密
<a name="sagemaker-sql-extension-redshift-secret"></a>

**在 AWS Secrets Manager 中存放 Amazon Redshift 資訊**

1. 從 AWS 主控台導覽至 Secrets Manager。

1. 選擇**儲存新機密**。

1. 在**機密類型**下，選擇 **Amazon Redshift 的憑證**。

1. 輸入啟動 Amazon Redshift 叢集時設定的管理員使用者名稱和密碼。

1. 選取與機密相關聯的 Amazon Redshift 叢集。

1. 為您的機密命名。

1. 其餘設定可保留為初始建立秘密時的預設值，或視需要自訂。

1. 建立機密並擷取其 ARN。

#### 設定 Amazon Redshift 的 AWS Glue 連線
<a name="sagemaker-sql-extension-redshift-glue-connection-creation"></a>

SQL 擴充功能會使用自訂連線連線至資料來源 AWS Glue 。如需建立 AWS Glue 連線以連接資料來源的一般資訊，請參閱 [建立 AWS Glue 連線 （適用於管理員）](#sagemaker-sql-extension-datasources-glue-connection)。下列範例是連線至 Amazon Redshift 的範例 AWS Glue 連線定義。

在建立新連線之前，請謹記下列建議：
+ `PythonProperties` 金鑰內的屬性由字串化金鑰/值對組成。以反斜線 (`\`) 字元逸出金鑰或值中使用的任何雙引號。
+ 在連線定義檔案中，輸入連線的名稱和描述，將 `aws_secret_arn` 中秘密的 ARN 取代為先前所建立秘密的 ARN。
+ 確定上述連線定義中透過其名稱宣告的資料庫符合叢集資料庫。您可以驗證這一點，方法是前往 [Amazon Redshift 主控台](https://console.aws.amazon.com/redshiftv2/)上的叢集詳細資訊頁面，並在**屬性**區段中的**資料庫組態**下驗證資料庫名稱。
+ 如需其他參數，請參閱 [Amazon Redshift 連線參數](sagemaker-sql-extension-connection-properties.md#sagemaker-sql-extension-connection-properties-redshift)中 Amazon Redshift 支援的連線屬性清單。
**注意**  
根據預設，除非連線屬性中的 `auto_commit` 設定為 `true`，否則 Python 的 SQL 延伸模組連接器會在交易中執行所有查詢。
您可以將包括 `database` 名稱在內的所有連線參數新增至秘密。

```
{
  "ConnectionInput": {
      "Name": "Redshift connection name",
      "Description": "Redshift connection description",
      "ConnectionType": "REDSHIFT",
      "ConnectionProperties": {
          "PythonProperties":"{\"aws_secret_arn\": \"arn:aws:secretsmanager:region:account_id:secret:secret_name\", \"database\":\"database_name\", \"database_metadata_current_db_only\": false}"
      }
  }
}
```

更新定義檔案後，請依照 中的步驟[建立 AWS Glue 連線](#sagemaker-sql-extension-datasources-glue-connection-creation)建立 AWS Glue 連線。

### 設定 Athena 的 AWS Glue 連線
<a name="sagemaker-sql-extension-athena-glue-connection-config"></a>

本節提供有關 Athena 特定 JSON 定義檔案中連線屬性的詳細資訊。

#### 設定 Athena 的 AWS Glue 連線
<a name="sagemaker-sql-extension-athena-glue-connection-creation"></a>

SQL 擴充功能會使用自訂連線連線至資料來源 AWS Glue 。如需建立 AWS Glue 連線以連接資料來源的一般資訊，請參閱 [建立 AWS Glue 連線 （適用於管理員）](#sagemaker-sql-extension-datasources-glue-connection)。下列範例是連線至 Athena 的範例 AWS Glue 連線定義。

在建立新連線之前，請謹記下列建議：
+ `ConnectionProperties` 金鑰內的屬性由字串化金鑰/值對組成。以反斜線 (`\`) 字元逸出金鑰或值中使用的任何雙引號。
+ 在連線定義檔案中，輸入連線的名稱和描述、將 `catalog_name` 取代為目錄的名稱、將 `s3_staging_dir` 取代為 Amazon S3 儲存貯體中輸出目錄的 Amazon S3 URI (統一資源識別碼)，並將 `region_name` 取代為 Amazon S3 儲存貯體的區域。
+ 如需其他參數，請參閱 [Athena 連線參數](sagemaker-sql-extension-connection-properties.md#sagemaker-sql-extension-connection-properties-athena)中 Athena 支援的連線屬性清單。
**注意**  
您可以將包括 `catalog_name` 或 `s3_staging_dir` 在內的所有連線參數新增至秘密。
如果您指定 `workgroup`，則不需要指定 `s3_staging_dir`。

```
{
    "ConnectionInput": {
        "Name": "Athena connection name",
        "Description": "Athena connection description",
        "ConnectionType": "ATHENA",
        "ConnectionProperties": {
            "PythonProperties": "{\"catalog_name\": \"catalog_name\",\"s3_staging_dir\": \"s3://amzn-s3-demo-bucket_in_same_region/output_query_results_dir/\", \"region_name\": \"region\"}"
        }
    }
}
```

更新定義檔案後，請依照 中的步驟[建立 AWS Glue 連線](#sagemaker-sql-extension-datasources-glue-connection-creation)建立 AWS Glue 連線。

### 設定 Snowflake 的 AWS Glue 連線
<a name="sagemaker-sql-extension-snowflake-glue-connection-config"></a>

本節提供有關 Snowflake 特定 JSON 定義檔案中秘密和連線屬性的詳細資訊。在建立您的連線組態檔案之前，建議您將 Snowflake 存取憑證儲存為 Secrets Manager 中的秘密。

#### 建立 Snowflake 存取憑證的機密
<a name="sagemaker-sql-extension-snowflake-secret"></a>

**在 Secrets Manager 中存放 Amazon Redshift 資訊**

1. 從 AWS 主控台導覽至 AWS Secrets Manager。

1. 選擇**儲存新機密**。

1. 在**機密類型**下，選擇**其他類型的機密**。

1. 在金鑰/值對中，選擇**純文字**，然後複製下列 JSON 內容。將 `user`、`password` 和 `account` 取代為其值。

   ```
   {
       "user":"snowflake_user",
       "password":"snowflake_password",
       "account":"account_id"
   }
   ```

1. 為機密命名。

1. 其餘設定可保留為初始建立秘密時的預設值，或視需要自訂。

1. 建立機密並擷取其 ARN。

#### 設定 Snowflake 的 AWS Glue 連線
<a name="sagemaker-sql-extension-snowflake-glue-connection-creation"></a>

SQL 擴充功能會使用自訂連線連線至資料來源 AWS Glue 。如需建立 AWS Glue 連線以連接資料來源的一般資訊，請參閱 [建立 AWS Glue 連線 （適用於管理員）](#sagemaker-sql-extension-datasources-glue-connection)。下列範例是連線至 Snowflake 的範例 AWS Glue 連線定義。

在建立新連線之前，請謹記下列建議：
+ `ConnectionProperties` 金鑰內的屬性由字串化金鑰/值對組成。以反斜線 (`\`) 字元逸出金鑰或值中使用的任何雙引號。
+ 在連線定義檔案中，輸入連線的名稱和描述，然後將 `aws_secret_arn` 中秘密的 ARN 取代為先前所建立秘密的 ARN，以及 `account` 中您的帳戶 ID。
+ 如需其他參數，請參閱 [Snowflake 連線參數](sagemaker-sql-extension-connection-properties.md#sagemaker-sql-extension-connection-properties-snowflake)中 Snowflake 支援的連線屬性清單。
**注意**  
您可以將包括 `account` 在內的所有連線參數新增至秘密。

```
{
    "ConnectionInput": {
        "Name": "Snowflake connection name",
        "Description": "Snowflake connection description",
        "ConnectionType": "SNOWFLAKE",
        "ConnectionProperties": {
            "PythonProperties":  "{\"aws_secret_arn\": \"arn:aws:secretsmanager:region:account_id:secret:secret_name\", \"account\":\"account_id\"}"}"
        }
    }
}
```

更新定義檔案後，請依照 中的步驟[建立 AWS Glue 連線](#sagemaker-sql-extension-datasources-glue-connection-creation)建立 AWS Glue 連線。

## 建立 AWS Glue 連線
<a name="sagemaker-sql-extension-datasources-glue-connection-creation"></a>

若要透過 建立 AWS Glue 連線 AWS CLI，請使用您的連線定義檔案並執行此 AWS CLI 命令。將`region`預留位置取代為您的 AWS 區域名稱，並提供定義檔案的本機路徑。

**注意**  
組態定義檔案的路徑前面必須有 `file://`。

```
aws --region region glue create-connection --cli-input-json file://path_to_file/sagemaker-sql-connection.json
```

執行下列命令，確認 AWS Glue 已建立連線，並檢查您的連線名稱。

```
aws --region region glue get-connections
```

或者，您可以更新現有的 AWS Glue 連線，如下所示：
+ 視需要修改 AWS Glue 連線定義檔案。
+ 執行下列命令來更新連線。

  ```
  aws --region region glue update-connection --name glue_connection_name --cli-input-json file://path_to_file/sagemaker-sql-connection.json
  ```