

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 创建 AWS Glue 连接（适用于管理员）
<a name="sagemaker-sql-extension-datasources-glue-connection"></a>

要使用带有 SQL 扩展模块的数据源，管理员可以为每个数据源设置 AWS Glue 连接。这些连接存储了访问数据来源并与之交互所需的配置详细信息。创建连接并授予[相应权限](sagemaker-sql-extension-datasources-connection-permissions.md)后，所有共享同一执行角色的 [亚马逊 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，请参阅[关于 AWS CLI 版本 2](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 存储凭据的更多信息，请参阅在 S [AWS ecrets 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 连接，请参阅中的示例定义文件。[为 Ath AWS Glue ena 配置连接](#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>

本节详细介绍 JSON 定义文件中 Amazon Redshift 特有的密文和连接属性。在创建连接配置文件之前，我们建议在 Secrets Manager 中将 Amazon Redshift 访问凭证存储为机密。或者，您可以根据通过 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>

**在 Secrets Manager 中 AWS 存储亚马逊 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)。以下示例是用于 AWS Glue 连接亚马逊 Redshift 的连接定义示例。

在创建新连接之前，请牢记以下建议：
+ `PythonProperties` 键中的属性由字符串化的键值对组成。用反斜杠 (`\`) 字符转义键或值中使用的双引号。
+ 在连接定义文件中输入连接名称和说明，用之前创建的密文的 ARN 替换 `aws_secret_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 支持的连接属性列表。
**注意**  
默认情况下，Python 的 SQL 扩展连接器在事务中运行所有查询，除非连接属性中的 `auto_commit` 设置为 `true`。
您可以将包括 `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 连接。

### 为 Ath AWS Glue ena 配置连接
<a name="sagemaker-sql-extension-athena-glue-connection-config"></a>

本节将详细介绍 JSON 定义文件中 Athena 特有的连接属性。

#### 为 Ath AWS Glue ena 配置连接
<a name="sagemaker-sql-extension-athena-glue-connection-creation"></a>

SQL 扩展使用自定义 AWS Glue 连接连接到数据源。有关创建 AWS Glue 连接以连接数据源的一般信息，请参见[创建 AWS Glue 连接（适用于管理员）](#sagemaker-sql-extension-datasources-glue-connection)。以下示例是 AWS Glue 连接到 Athena 的示例连接定义。

在创建新连接之前，请牢记以下建议：
+ `ConnectionProperties` 键中的属性由字符串化的键值对组成。用反斜杠 (`\`) 字符转义键或值中使用的双引号。
+ 在连接定义文件中，输入连接的名称和描述，用目录名称替换 `catalog_name`，用 Amazon S3 存储桶中输出目录的 Amazon S3 URI（统一资源标识符）替换 `s3_staging_dir`，用 Amazon S3 存储桶的区域替换 `region_name`。
+ 有关其他参数，请参阅 [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>

本节将详细介绍 JSON 定义文件中专门针对 Snowflake 的密文和连接属性。在创建连接配置文件之前，我们建议将您的 Snowflake 访问凭证作为机密存储在 Secrets Manager 中。

#### 为 Snowflake 访问凭证创建密文
<a name="sagemaker-sql-extension-snowflake-secret"></a>

**在 Secrets Manager 中存储 Amazon Redshift 信息**

1. 在 AWS 控制台中，导航到 AWS Secrets Manager。

1. 选择**存储新密钥**。

1. 在**密文类型**下，选择**其他密文类型**。

1. 在键值对中，选择 **Plaintext**，然后复制以下 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)。以下示例是 AWS Glue 连接到 Snowflake 的示例连接定义。

在创建新连接之前，请牢记以下建议：
+ `ConnectionProperties` 键中的属性由字符串化的键值对组成。用反斜杠 (`\`) 字符转义键或值中使用的双引号。
+ 在连接定义文件中输入连接的名称和描述，然后用之前创建的密文的 ARN 替换 `aws_secret_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 命令。用您的 AWS 区域名称替换`region`占位符，并提供定义文件的本地路径。

**注意**  
配置定义文件的路径前必须有 `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
  ```