创建 AWS Glue 连接(适用于管理员) - 亚马逊 SageMaker AI

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

创建 AWS Glue 连接(适用于管理员)

要使用带有 SQL 扩展模块的数据源,管理员可以为每个数据源设置 AWS Glue 连接。这些连接存储访问数据源并与之交互所需的配置详细信息。创建连接并授予相应权限后,共享相同执行角色的所有用户都可以看到亚马逊 SageMaker Studio 空间这些连接。

建立这些联系:

  • 首先,创建一个 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。确保用于配置的 IAM 用户或角色的访问密钥和令牌 AWS CLI 具有创建 AWS Glue 连接所需的权限。添加允许 glue:CreateConnection 操作的策略。

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

创建连接定义 JSON 文件

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

连接定义文件应遵循以下一般格式:

  • Name 是连接名称。

  • Description 是连接的文字描述。

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

  • 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 扩展连接到这些数据存储所需的特定属性和配置。有关定义与该信号源连接的详情,请参阅相应章节。

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

为 Amazon Redshift 访问凭证创建密文

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

  2. 选择存储新密钥

  3. 密文类型下,选择 Amazon Redshift 的凭证

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

  5. 选择与机密相关的 Amazon Redshift 集群。

  6. 为密文命名。

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

  8. 创建密文并检索其 ARN。

为 Amazon Redshift 配置 AWS Glue 连接

SQL 扩展使用自定义 AWS Glue 连接连接到数据源。有关创建 AWS Glue 连接以连接数据源的一般信息,请参见创建 AWS Glue 连接(适用于管理员)。以下示例是用于 AWS Glue 连接亚马逊 Redshift 的连接定义示例。

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

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

  • 在连接定义文件中输入连接名称和说明,用之前创建的密文的 ARN 替换 aws_secret_arn 中密文的 ARN。

  • 确保上述连接定义中按名称声明的数据库与集群数据库一致。您可以访问 Amazon Redshift 管理控制台上的集群详细信息页面上,并在属性部分的 数据库配置下验证数据库名称。

  • 有关其他参数,请参阅 Amazon 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 连接步骤创建 AWS Glue 连接。

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

为 Athena 配置 AWS Glue 连接

SQL 扩展使用自定义 AWS Glue 连接连接到数据源。有关创建 AWS Glue 连接以连接数据源的一般信息,请参见创建 AWS Glue 连接(适用于管理员)。以下示例是 AWS Glue 连接到 Athena 的示例连接定义。

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

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

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

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

    注意
    • 您可以将所有连接参数,包括 catalog_names3_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 连接步骤创建 AWS Glue 连接。

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

为 Snowflake 访问凭证创建密文

在 Secrets Manager 中存储 Amazon Redshift 信息
  1. 在 AWS 控制台中,导航到 AWS Secrets Manager。

  2. 选择存储新密钥

  3. 密文类型下,选择其他密文类型

  4. 在键值对中,选择 Plaintext,然后复制以下 JSON 内容。用它们的值替换 userpasswordaccount

    { "user":"snowflake_user", "password":"snowflake_password", "account":"account_id" }
  5. 为密文命名。

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

  7. 创建密文并检索其 ARN。

为 Snowflake 配置 AWS Glue 连接

SQL 扩展使用自定义 AWS Glue 连接连接到数据源。有关创建 AWS Glue 连接以连接数据源的一般信息,请参见创建 AWS Glue 连接(适用于管理员)。以下示例是 AWS Glue 连接到 Snowflake 的示例连接定义。

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

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

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

  • 有关其他参数,请参阅 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 连接步骤创建 AWS Glue 连接。

创建 AWS Glue 连接

要通过创建 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