本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
配置 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是连接的类型。选择
REDSHIFT
、ATHENA
或SNOWFLAKE
。 -
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扩展连接到这些数据存储所需的特定属性和配置。有关定义与该源的连接的详细信息,请参阅相应的部分。
-
要为 Amazon Redshift 创建 Amazon Glue 连接,请参阅中的示例定义文件。为 Amazon Redshift 配置 Amazon Glue 连接
-
要为 Amazon Athena 创建 Amazon Glue 连接,请参阅中的示例定义文件。为 Ath Amazon Glue ena 配置连接
-
要为 Snowflake 创建 Amazon Glue 连接,请参阅中的示例定义文件。为 Snowflake 配置 Amazon Glue 连接
本节详细介绍了JSON定义文件中特定于 Amazon Redshift 的密钥和连接属性。在创建连接配置文件之前,我们建议将您的 Amazon Redshift 访问凭证作为密钥存储在 Secrets Manager 中。或者,您可以根据通过 Amazon Identity and Access Management (IAM) 权限策略授予的权限生成临时数据库证书,以管理您的用户对您的 Amazon Redshift 数据库的访问权限。有关更多信息,请参阅使用IAM身份验证生成数据库用户凭证。
为亚马逊 Redshift 访问凭证创建密钥
在 Secrets Manager 中 Amazon 存储亚马逊 Redshift 信息
-
从 Amazon 控制台导航到 Secrets Manager。
-
选择 存储新密钥。
-
在 “密钥类型” 下,选择 Amazon Redshift 的凭证。
-
输入启动 Amazon Redshift 集群时配置的管理员用户名和密码。
-
选择与密钥关联的 Amazon Redshift 集群。
-
说出你的秘密。
-
其余设置可以保留其初始密钥创建的默认值,也可以根据需要进行自定义。
-
创建密钥并检索它ARN。
为 Amazon Redshift 配置 Amazon Glue 连接
该SQL扩展程序使用自定义 Amazon Glue 连接连接到数据源。有关创建 Amazon Glue 连接以连接数据源的一般信息,请参见配置 Amazon Glue 连接。以下示例是用于 Amazon Glue 连接亚马逊 Redshift 的连接定义示例。
在创建新连接之前,请记住以下建议:
-
键中的属性由字符串化的
PythonProperties
键值对组成。使用反斜杠 (\
) 字符对键或值中使用的任何双引号进行转义。 -
在连接定义文件中,输入连接的名称和描述,将中的ARN
aws_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_name
或s3_staging_dir
)添加到密钥中。 -
如果指定 a
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://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 信息
-
从 Amazon 控制台导航到 Secrets Manager。
-
选择 存储新密钥。
-
在 “密钥类型” 下,选择 “其他密钥类型”。
-
在键值对中,选择 Plaintext,然后复制以下内容。JSON将
user
、和password
,替换account
为它们的值。{ "user":"
snowflake_user
", "password":"snowflake_password
", "account":"account_id
" } -
给秘密起个名字。
-
其余设置可以保留其初始密钥创建的默认值,也可以根据需要进行自定义。
-
创建密钥并检索它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 --nameglue_connection_name
--cli-input-json file://path_to_file/sagemaker-sql-connection.json