本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
创建 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是连接的类型。选择
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 连接
-
要为 Amazon Athena 创建 AWS Glue 连接,请参阅中的示例定义文件。为 Athena 配置 AWS Glue 连接
-
要为 Snowflake 创建 AWS Glue 连接,请参阅中的示例定义文件。为 Snowflake 配置 AWS Glue 连接
本节详细介绍 JSON 定义文件中 Amazon Redshift 特有的密文和连接属性。在创建连接配置文件之前,我们建议在 Secrets Manager 中将 Amazon Redshift 访问凭证存储为机密。或者,您可以根据通过 AWS Identity and Access Management (IAM) 权限策略授予的权限生成临时数据库证书,以管理您的用户对您的 Amazon Redshift 数据库的访问权限。有关更多信息,请参阅使用 IAM 身份验证生成数据库用户凭证。
为 Amazon Redshift 访问凭证创建密文
在 Secrets Manager 中 AWS 存储亚马逊 Redshift 信息
-
从 AWS 控制台导航到 Secrets Manager。
-
选择存储新密钥。
-
在密文类型下,选择 Amazon Redshift 的凭证。
-
输入启动 Amazon Redshift 集群时配置的管理员用户名和密码。
-
选择与机密相关的 Amazon Redshift 集群。
-
为密文命名。
-
其余设置可保留为初始创建密文时的默认值,也可根据需要自定义。
-
创建密文并检索其 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_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 连接步骤创建 AWS Glue 连接。
本节将详细介绍 JSON 定义文件中专门针对 Snowflake 的密文和连接属性。在创建连接配置文件之前,我们建议将您的 Snowflake 访问凭证作为机密存储在 Secrets Manager 中。
为 Snowflake 访问凭证创建密文
在 Secrets Manager 中存储 Amazon Redshift 信息
-
在 AWS 控制台中,导航到 AWS Secrets Manager。
-
选择存储新密钥。
-
在密文类型下,选择其他密文类型。
-
在键值对中,选择 Plaintext,然后复制以下 JSON 内容。用它们的值替换
user
、password
和account
。{ "user":"
snowflake_user
", "password":"snowflake_password
", "account":"account_id
" } -
为密文命名。
-
其余设置可保留为初始创建密文时的默认值,也可根据需要自定义。
-
创建密文并检索其 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 --nameglue_connection_name
--cli-input-json file://path_to_file/sagemaker-sql-connection.json