配置 Amazon Glue 连接 - Amazon SageMaker
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

配置 Amazon Glue 连接

要配置用于SQL扩展模块的数据源,管理员需要为每个数据源创建一个 Amazon Glue 连接。这些连接存储了允许访问数据源并与之交互的配置详细信息。

要创建这些连接,请执行以下操作:

  • 首先,创建一个JSON文件来定义每个数据源的连接属性。该JSON文件包含诸如数据源标识符、访问凭证和其他通过 Amazon Glue 连接访问数据源的相关配置参数之类的详细信息。

  • 然后使用 Amazon Command Line Interface (Amazon CLI) 创建 Amazon Glue 连接,将JSON文件作为参数传递。该 Amazon CLI 命令从JSON文件中读取连接详细信息并建立相应的连接。

    注意

    该SQL扩展 Amazon CLI 仅支持使用创建连接。

在创建 Amazon Glue 连接之前,请确保完成以下步骤:

  • 安装并配置 Amazon Command Line Interface (Amazon CLI)。有关如何安装和配置的更多信息 Amazon CLI,请参阅关于 Amazon CLI 版本 2。确保用于配置的IAM用户或角色的访问密钥和令牌 Amazon CLI 具有创建 Amazon Glue 连接所需的权限。添加允许以其他方式glue:CreateConnection执行操作的策略。

  • 了解如何使用 Amazon Secrets Manager。我们建议您使用 Secrets Manager 为您的数据存储提供连接凭证和任何其他敏感信息。有关使用 Secrets Manager 存储凭据的更多信息,请参阅在 S Amazon ecrets Manager 中存储连接凭证

创建连接定义JSON文件

要创建 Amazon Glue 连接定义文件,请在安装和配置的计算机上创建一个JSON文件来定义连接的详细信息 Amazon CLI。在本示例中,为文件命名sagemaker-sql-connection.json

连接定义文件应遵循以下常规格式:

  • 名称是连接的名称。

  • 描述是对连接的文字描述。

  • ConnectionType是连接的类型。选择 REDSHIFTATHENASNOWFLAKE

  • ConnectionProperties是连接属性的键值对映射,例如您的 Amazon 密钥或数据库的名称。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扩展连接到这些数据存储所需的特定属性和配置。有关定义与该源的连接的详细信息,请参阅相应的部分。

本节详细介绍了JSON定义文件中特定于 Amazon Redshift 的密钥和连接属性。在创建连接配置文件之前,我们建议将您的 Amazon Redshift 访问凭证作为密钥存储在 Secrets Manager 中。或者,您可以根据通过 Amazon Identity and Access Management (IAM) 权限策略授予的权限生成临时数据库证书,以管理您的用户对您的 Amazon Redshift 数据库的访问权限。有关更多信息,请参阅使用IAM身份验证生成数据库用户凭证

为亚马逊 Redshift 访问凭证创建密钥

在 Secrets Manager 中 Amazon 存储亚马逊 Redshift 信息
  1. 从 Amazon 控制台导航到 Secrets Manager。

  2. 选择 存储新密钥

  3. 在 “密钥类型” 下,选择 Amazon Redshift 的凭证

  4. 输入启动 Amazon Redshift 集群时配置的管理员用户名和密码。

  5. 选择与密钥关联的 Amazon Redshift 集群。

  6. 说出你的秘密。

  7. 其余设置可以保留其初始密钥创建的默认值,也可以根据需要进行自定义。

  8. 创建密钥并检索它ARN。

为 Amazon Redshift 配置 Amazon Glue 连接

该SQL扩展程序使用自定义 Amazon Glue 连接连接到数据源。有关创建 Amazon Glue 连接以连接数据源的一般信息,请参见配置 Amazon Glue 连接。以下示例是用于 Amazon Glue 连接亚马逊 Redshift 的连接定义示例。

在创建新连接之前,请记住以下建议:

  • 键中的属性由字符串化的PythonProperties键值对组成。使用反斜杠 (\) 字符对键或值中使用的任何双引号进行转义。

  • 在连接定义文件中,输入连接的名称和描述,将中的ARNaws_secret_arn密钥替换为先前创建ARN的密钥。

  • 确保在上述连接定义中以其名称声明的数据库与集群数据库相匹配。您可以通过访问 Amazon Redshift 控制台上的集群详细信息页面,然后在 “属性” 部分的 “数据库配置” 下验证数据库名称来验证这一点。

  • 有关其他参数,请参阅中的 Amazon Redshift 支持的连接属性列表。亚马逊 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}" } } }

更新定义文件后,请按照中的创建 Amazon Glue 连接步骤创建 Amazon Glue 连接。

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

为 Ath Amazon Glue ena 配置连接

该SQL扩展程序使用自定义 Amazon Glue 连接连接到数据源。有关创建 Amazon Glue 连接以连接数据源的一般信息,请参见配置 Amazon Glue 连接。以下示例是 Amazon Glue 连接到 Athena 的示例连接定义。

在创建新连接之前,请记住以下建议:

  • 键中的属性由字符串化的ConnectionProperties键值对组成。使用反斜杠 (\) 字符对键或值中使用的任何双引号进行转义。

  • 在连接定义文件中,输入连接的名称和描述,将替换为目录名称,替换为 Amazon S3 存储桶中输出目录的 Amazon S3URI(统一资源标识符),替换为 Amazon S3 存储桶的区域。catalog_name s3_staging_dir region_name

  • 有关其他参数,请参阅中的 Athena 支持的连接属性列表。Athena 连接参数

    注意
    • 您可以将所有连接参数(包括catalog_names3_staging_dir)添加到密钥中。

    • 如果指定 aworkgroup,则无需指定s3_staging_dir

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

更新定义文件后,请按照中的创建 Amazon Glue 连接步骤创建 Amazon Glue 连接。

本节详细介绍了JSON定义文件中特定于 Snowflake 的密钥和连接属性。在创建连接配置文件之前,我们建议您将 Snowflake 访问凭证作为密钥存储在 Secrets Manager 中。

为 Snowflake 访问凭证创建密钥

在 Secrets Manager 中存储亚马逊 Redshift 信息
  1. 从 Amazon 控制台导航到 Secrets Manager。

  2. 选择 存储新密钥

  3. 在 “密钥类型” 下,选择 “其他密钥类型”。

  4. 在键值对中,选择 Plaintext,然后复制以下内容。JSON将user、和password,替换account为它们的值。

    { "user":"snowflake_user", "password":"snowflake_password", "account":"account_id" }
  5. 给秘密起个名字。

  6. 其余设置可以保留其初始密钥创建的默认值,也可以根据需要进行自定义。

  7. 创建密钥并检索它ARN。

为 Snowflake 配置 Amazon Glue 连接

该SQL扩展程序使用自定义 Amazon Glue 连接连接到数据源。有关创建 Amazon Glue 连接以连接数据源的一般信息,请参见配置 Amazon Glue 连接。以下示例是 Amazon Glue 连接到 Snowflake 的示例连接定义。

在创建新连接之前,请记住以下建议:

  • 键中的属性由字符串化的ConnectionProperties键值对组成。使用反斜杠 (\) 字符对键或值中使用的任何双引号进行转义。

  • 在连接定义文件中,输入连接的名称和描述,然后将中的aws_secret_arn密钥替换为先前创建ARN的密钥,并将您的账户 ID 替换为中account。ARN

  • 有关其他参数,请参阅 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\"}"}" } } }

更新定义文件后,请按照中的创建 Amazon Glue 连接步骤创建 Amazon Glue 连接。

创建 Amazon Glue 连接

要通过创建 Amazon Glue 连接 Amazon CLI,请使用您的连接定义文件并运行此 Amazon CLI 命令。用您的 Amazon 区域名称替换region占位符,并提供定义文件的本地路径。

注意

配置定义文件的路径必须前面加上。file://

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

通过运行以下命令验证 Amazon Glue 连接是否已创建,并检查您的连接名称。

aws --region region glue get-connections

或者,您可以按如下方式更新现有 Amazon Glue 连接:

  • 根据需要修改 Amazon Glue 连接定义文件。

  • 运行以下命令以更新连接。

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