

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

# 连接到数据来源
<a name="canvas-connecting-external"></a>

在 Amazon SageMaker Canvas 中，您可以使用 JDBC 连接器通过 AWS 服务、SaaS 平台或其他数据库从本地文件系统以外的位置导入数据。例如，您可能想从 Amazon Redshift 的数据仓库中导入表，或者想导入 Google Analytics 数据。

通过**导入**工作流在 Canvas 应用程序中导入数据时，您可以选择数据来源，然后选择要导入的数据。对于某些数据来源（如 Snowflake 和 Amazon Redshift），必须指定您的凭证并添加与数据来源的连接。

以下屏幕截图显示了**导入**工作流中的数据来源工具栏，其中突出显示了所有可用的数据来源。您只能从可用的数据来源中导入数据。如果您所需的数据来源不可用，请联系您的管理员。

![\[Canvas 中导入数据页面上的数据来源下拉菜单。\]](http://docs.aws.amazon.com/zh_cn/sagemaker/latest/dg/images/studio/canvas/data-sources.png)


以下几节提供有关建立与外部数据来源的连接以及从外部数据来源导入数据的信息。请先查看以下部分，以确定从数据来源导入数据所需的权限。

## Permissions
<a name="canvas-connecting-external-permissions"></a>

查看以下信息，以确保您拥有从数据来源导入数据的必要权限：
+ **Amazon S3：**只要用户拥有访问 Amazon S3 存储桶的权限，就可以从任何这样的存储桶导入数据。有关使用 AWS IAM 控制对 Amazon S3 存储桶的访问的更多信息，请参阅 Amazon S3 *用户指南*[中的 Amazon S3 中的身份和访问管理](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-access-control.html)。
+ **Amazon Athena**：如果您[AmazonSageMakerFullAccess](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonSageMakerFullAccess.html)将策略和[AmazonSageMakerCanvasFullAccess](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonSageMakerCanvasFullAccess.html)策略附加到用户的执行角色上，则可以通过 A AWS Glue Data Catalog mazon Athena 查询您的策略。如果您是 Athena 工作组的成员，请确保 Canvas 用户有权对数据运行 Athena 查询。有关更多信息，请参阅《Amazon Athena 用户指南》**中的[使用工作组运行查询](https://docs.aws.amazon.com/athena/latest/ug/workgroups.html)。
+ **Amazon DocumentDB：**只要您拥有连接到数据库的凭证（用户名和密码），并拥有附加到用户执行角色的最低基本 Canvas 权限，您就可以从任何 Amazon DocumentDB 数据库导入数据。有关 Canvas 权限的更多信息，请参阅 [设置 Amazon C SageMaker anvas 的先决条件](canvas-getting-started.md#canvas-prerequisites)。
+ **Amazon Redshift：**要授予您自己从 Amazon Redshift 导入数据的必要权限，请参阅[授予用户导入 Amazon Redshift 数据的权限](https://docs.aws.amazon.com/sagemaker/latest/dg/canvas-redshift-permissions.html)。
+ **Amazon RDS：**如果您将[AmazonSageMakerCanvasFullAccess](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonSageMakerCanvasFullAccess.html)策略附加到用户的执行角色，那么您将能够从 Canvas 访问您的 Amazon RDS 数据库。
+ **SaaS 平台：**如果您将[AmazonSageMakerFullAccess](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonSageMakerFullAccess.html)策略和[AmazonSageMakerCanvasFullAccess](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonSageMakerCanvasFullAccess.html)策略附加到用户的执行角色，那么您就拥有从 SaaS 平台导入数据的必要权限。有关连接到特定 SaaS 连接器的更多信息，请参阅[在 Canvas 中使用 SaaS 连接器](#canvas-connecting-external-appflow)。
+ **JDBC 连接器：**对于 Databricks、MySQL 或 MariaDB 等数据库源，在尝试从 Canvas 进行连接之前，必须先在源数据库上启用用户名和密码身份验证。如果要连接到 Databricks 数据库，必须有包含必要凭证的 JDBC URL。

## Connect 连接到存储在中的数据库 AWS
<a name="canvas-connecting-internal-database"></a>

您可能需要导入存储在中的数据 AWS。您可以从 Amazon S3 导入数据，使用 Amazon Athena 在中查询数据库，从 Amazon RDS 导入数据，或者连接到预配置的 [Amazon](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Welcome.html) Redshift 数据库（不 AWS Glue Data Catalog是 Redshift Serverless）。

您可以创建多个到 Amazon Redshift 的连接。对于 Amazon Athena，您可以访问 [AWS Glue Data Catalog](https://docs.aws.amazon.com/prescriptive-guidance/latest/serverless-etl-aws-glue/aws-glue-data-catalog.html) 中的任何数据库。对于 Amazon S3，只要您拥有必要的权限，就可以从存储桶导入数据。

请查看以下几节，了解更多详细信息。

### 连接 Amazon S3、Amazon Athena 或 Amazon RDS 中的数据
<a name="canvas-connecting-internal-database-s3-athena"></a>

对于 Amazon S3，只要您拥有访问 Amazon S3 存储桶的权限，就可以从该存储桶导入数据。

对于亚马逊 Athena，只要您拥有通过亚马逊 [A](https://docs.aws.amazon.com/athena/latest/ug/manage-queries-control-costs-with-workgroups.html) thena 工作组的权限，您就可以访问 AWS Glue Data Catalog 自己的数据库。

对于 Amazon RDS，如果您将[AmazonSageMakerCanvasFullAccess](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonSageMakerCanvasFullAccess.html)策略附加到您的用户角色上，则可以将数据从 Amazon RDS 数据库导入到 Canvas。

要从 Amazon S3 存储桶导入数据，或使用 Amazon Athena 运行查询和导入数据表，请参阅[创建数据集](canvas-import-dataset.md)。您只能从 Amazon Athena 导入表格数据，但可以从 Amazon S3 导入表格和图像数据。

### 连接到 Amazon DocumentDB 数据库
<a name="canvas-connecting-docdb"></a>

Amazon DocumentDB 是一种完全托管的无服务器文档数据库服务。您可以将存储在 Amazon DocumentDB 数据库中的非结构化文档数据作为表格数据集导 SageMaker 入 Canvas，然后使用这些数据构建机器学习模型。

**重要**  
您的 SageMaker AI 域必须配置为**仅限 VPC 模式才能**添加与 Amazon DocumentDB 的连接。您只能访问与 Canvas 应用程序位于同一 Amazon VPC 中的 Amazon DocumentDB 集群。此外，Canvas 只能连接到支持 TLS 的 Amazon DocumentDB 集群。有关如何在**仅限 VPC** 模式下设置 Canvas 的更多信息，请参阅 [在没有互联网访问权限的 VPC 中配置 Amazon SageMaker Canvas](canvas-vpc.md)。

要从 Amazon DocumentDB 数据库导入数据，您必须拥有访问 Amazon DocumentDB 数据库的凭证，并在创建数据库连接时指定用户名和密码。您可以通过修改 Amazon DocumentDB 用户权限来配置更精细的权限并限制访问权限。要了解有关 Amazon DocumentDB 中访问控制的更多信息，请参阅[《Amazon DocumentDB 开发人员指南》](https://docs.aws.amazon.com/documentdb/latest/developerguide/role_based_access_control.html)中的*使用基于角色的访问控制进行数据库访问*。

当您从 Amazon DocumentDB 导入时，Canvas 会将字段映射到表中的列，从而将非结构化数据转换为表格数据集。为数据中的每个复杂字段（或嵌套结构）创建其他表，其中的列与复杂字段的子字段相对应。有关此过程的更多详细信息以及架构转换示例，请参阅 [Amazon DocumentDB JDBC 驱动程序](https://github.com/aws/amazon-documentdb-jdbc-driver/blob/develop/src/markdown/schema/schema-discovery.md)架构发现页面。 GitHub 

Canvas 只能连接到 Amazon DocumentDB 中的单个数据库。要从不同的数据库导入数据，您必须创建新的连接。

您可以使用以下方法将 Amazon DocumentDB 中的数据导入 Canvas：
+ [创建数据集](canvas-import-dataset.md)。您可以在 Canvas 中导入 Amazon DocumentDB 数据并创建表格数据集。如果您选择此方法，请确保按照[导入表格数据](https://docs.aws.amazon.com/sagemaker/latest/dg/canvas-import-dataset.html#canvas-import-dataset-tabular)步骤操作。
+ [创建数据流](canvas-data-flow.md)。您可以在 Canvas 中创建数据准备管道，并将 Amazon DocumentDB 数据库添加为数据来源。

要继续导入数据，请按照前面列表中链接的方法之一操作。

当您在工作流程中选择数据来源的步骤时（创建数据集的步骤 6 或创建数据流的步骤 8），请执行以下操作：

1. 在**数据来源**中，打开下拉菜单并选择 **DocumentDB**。

1. 选择**添加连接**。

1. 在对话框中指定您的 Amazon DocumentDB 凭证：

   1. 输入**连接名称**。这是 Canvas 用来识别此连接的名称。

   1. 在**集群**中，选择 Amazon DocumentDB 中存储数据的集群。Canvas 会自动在下拉菜单中填充与 Canvas 应用程序位于同一 VPC 中的 Amazon DocumentDB 集群。

   1. 输入 Amazon DocumentDB 集群的**用户名**。

   1. 输入 Amazon DocumentDB 集群的**密码**。

   1. 输入要连接到的**数据库**的名称。

   1. **读取首选项**选项决定了 Canvas 从集群上哪些类型的实例读取数据。选择以下选项之一：
      + **次要首选**：Canvas 默认为从集群的次要实例中读取，但如果次要实例不可用，则 Canvas 会从主实例中读取。
      + **次要**：Canvas 仅从集群的次要实例读取数据，从而避免读取操作干扰集群的正常读写操作。

   1. 选择**添加连接**。下图显示了带有 Amazon DocumentDB 连接前面字段的对话框。  
![\[Canvas 中的添加新的 DocumentDB 连接对话框的界面截图。\]](http://docs.aws.amazon.com/zh_cn/sagemaker/latest/dg/images/studio/canvas/add-docdb-connection.png)

现在您应该连接到了 Amazon DocumentDB，您可以在 Canvas 中使用 Amazon DocumentDB 数据创建数据集或数据流。

### 连接到 Amazon Redshift 数据库
<a name="canvas-connecting-redshift"></a>

您可以从组织保存数据的数据仓库 Amazon Redshift 中导入数据。在从 Amazon Redshift 导入数据之前，您使用 AWS 的 IAM 角色必须附加`AmazonRedshiftFullAccess`托管策略。有关如何附加此策略的说明，请参阅[授予用户导入 Amazon Redshift 数据的权限](canvas-redshift-permissions.md)。

要从 Amazon Redshift 导入数据，您需要执行以下操作：

1. 创建与 Amazon Redshift 数据库的连接。

1. 选择要导入的数据。

1. 导入数据。

您可以使用 Amazon Redshift 编辑器将数据集拖到导入窗格上，然后将其导入到 Canvas 中 SageMaker 。要更好地控制数据集中返回的值，可以使用以下方法：
+ SQL 查询
+ 联接

通过 SQL 查询，您可以自定义导入数据集中值的方式。例如，您可以指定数据集中返回的列或列的值范围。

您可以使用联接将来自 Amazon Redshift 的多个数据集合并到一个数据集中。您可以将数据集从 Amazon Redshift 拖动到面板中，以便您能够联接数据集。

您可以使用 SQL 编辑器编辑已联接的数据集，并将联接的数据集转换为单个节点。您可以将另一个数据集联接到该节点。你可以将你选择的数据导入 SageMaker 画布。

使用以下过程从 Amazon Redshift 导入数据。

1. 在 SageMaker Canvas 应用程序中，转到**数据集**页面。

1. 选择**导入数据**，然后从下拉菜单中选择**表格**。

1. 输入数据集的名称，然后选择**创建**。

1. 对于**数据来源**，打开下拉菜单并选择 **Redshift**。

1. 选择**添加连接**。

1. 在对话框中指定您的 Amazon Redshift 凭证：

   1. 对于**身份验证方法**，请选择 **IAM**。

   1. 输入**集群标识符**以指定要连接到哪个集群。只输入集群标识符，不输入 Amazon Redshift 集群的完整端点。

   1. 输入要连接的数据库的**数据库名称**。

   1. 输入**数据库用户**以识别要用来连接到数据库的用户。

   1. 对于 **ARN**，输入 IAM 角色 ARN，该角色是 Amazon Redshift 集群在向 Amazon S3 移动和写入数据时应代入的角色。有关此角色的更多信息，请参阅《[亚马逊 Redshift 管理指南》中的授权亚马逊 Reds *hift* 代表您访问 AWS 其他服务](https://docs.aws.amazon.com/redshift/latest/mgmt/authorizing-redshift-service.html)。

   1. 输入**连接名称**。这是 Canvas 用来识别此连接的名称。

1. 从显示连接名称的选项卡中，将要导入的 .csv 文件拖动到**拖放表以导入**窗格。

1. 可选：将其他表拖到导入窗格中。您可以使用 GUI 来联接表。要使联接更具体，请选择**在 SQL 中编辑**。

1. 可选：如果您使用 SQL 查询数据，则可以选择**上下文**通过指定以下内容的值来向连接添加上下文：
   + **数据仓库**
   + **数据库**
   + **架构**

1. 选择**导入数据**。

下图显示了为 Amazon Redshift 连接指定的字段的示例。

![\[Canvas 中的添加新的 Redshift 连接对话框的界面截图。\]](http://docs.aws.amazon.com/zh_cn/sagemaker/latest/dg/images/studio/canvas/canvas-redshift-add-connection.png)


下图显示了用于在 Amazon Redshift 中联接数据集的页面。

![\[Canvas 中导入页面的界面截图，显示正在连接的两个数据集。\]](http://docs.aws.amazon.com/zh_cn/sagemaker/latest/dg/images/studio/canvas/canvas-redshift-join.png)


下图显示了用于在 Amazon Redshift 中编辑联接的 SQL 查询。

![\[Canvas 中导入页面上编辑 SQL 编辑器中的 SQL 查询界面截图。\]](http://docs.aws.amazon.com/zh_cn/sagemaker/latest/dg/images/studio/canvas/canvas-redshift-edit-sql.png)


## 使用 JDBC 连接器连接数据
<a name="canvas-connecting-jdbc"></a>

使用 JDBC，您可以从 Databricks、 SQLServer MySQL、PostgreSQL、MariaDB、Amazon RDS 和 Amazon Aurora 等来源连接到数据库。

您必须确保拥有从 Canvas 创建连接所需的凭证和权限。
+ 对于 Databricks，必须提供 JDBC URL。不同 Databricks 实例的 URL 格式可能有所不同。有关查找 URL 以及在其中指定参数的信息，请参阅 Databricks 文档中的 [JDBC 配置和连接参数](https://docs.databricks.com/integrations/bi/jdbc-odbc-bi.html#jdbc-configuration-and-connection-parameters)。下面举例说明 URL 的格式：`jdbc:spark://aws-sagemaker-datawrangler.cloud.databricks.com:443/default;transportMode=http;ssl=1;httpPath=sql/protocolv1/o/3122619508517275/0909-200301-cut318;AuthMech=3;UID=token;PWD=personal-access-token`
+ 对于其他数据库源，必须设置用户名和密码身份验证，然后在从 Canvas 连接到数据库时指定这些凭证。

此外，您的数据来源必须可以通过公共互联网访问，如果 Canvas 应用程序以**仅 VPC** 模式运行，那么数据来源必须运行在同一个 VPC 中。有关在 VPC 中配置 Amazon RDS 数据库的更多信息，请参阅 [Amazon RDS 用户指南中的亚马逊 VPC VPCs 和](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_VPC.html) *Amazon RDS*。

配置数据来源凭证后，您可以登录 Canvas 应用程序并创建与数据来源的连接。在创建连接时指定您的凭证（对于 Databricks，则指定 URL）。

## 使用 Connect 连接到数据源 OAuth
<a name="canvas-connecting-oauth"></a>

Canvas 支持使用 OAuth 身份验证方法来连接你在 Snowflake 和 Salesforce Data Cloud 中的数据。 [OAuth](https://oauth.net/2/)是一个常用的身份验证平台，用于在不共享密码的情况下授予对资源的访问权限。

**注意**  
只能为每个数据源建立一个 OAuth 连接。

要授权连接，必须按照[使用设置与数据源的连接 OAuth](canvas-setting-up-oauth.md)中所述的初始设置进行操作。

设置 OAuth 凭据后，您可以执行以下操作来添加 Snowflake 或 Salesforce Data Cloud 连接： OAuth

1. 登录到 Canvas 应用程序。

1. 创建表格数据集。当系统提示上传数据时，请选择 Snowflake 或 Salesforce Data Cloud 作为数据来源。

1. 创建与 Snowflake 或 Salesforce Data Cloud 数据来源的新连接。指定 OAuth 为身份验证方法并输入您的连接详细信息。

现在，您应该能够从 Snowflake 或 Salesforce Data Cloud 中的数据库导入数据。

## 连接到 SaaS 平台
<a name="canvas-connecting-saas"></a>

您可以从 Snowflake 和其他 40 多个外部 SaaS 平台导入数据。有关连接器的完整列表，请参阅[导入数据](canvas-importing-data.md)中的表。

**注意**  
您只能从 SaaS 平台导入表格数据，例如数据表。

### 在 Canvas 中使用 Snowflake
<a name="canvas-using-snowflake"></a>

Snowflake 是一项数据存储和分析服务，你可以将数据从 Snowflake 导入 Canvas。 SageMaker 有关 Snowflake 的更多信息，请参阅 [Snowflake 文档](https://www.snowflake.com/en/)。

您可以通过执行以下操作从 Snowflake 账户导入数据：

1. 创建与 Snowflake 数据库的连接。

1. 通过将表格从左侧导航菜单拖放到编辑器中来选择要导入的数据。

1. 导入数据。

您可以使用 Snowflake 编辑器将数据集拖到导入窗格上，然后将其导入到 Canvas 中 SageMaker 。要更好地控制数据集中返回的值，可以使用以下方法：
+ SQL 查询
+ 联接

通过 SQL 查询，您可以自定义导入数据集中值的方式。例如，您可以指定数据集中返回的列或列的值范围。

在使用 SQL 或 Canvas 界面导入 Canvas 之前，您可以将多个 Snowflake 数据集联接到单个数据集中。您可以将数据集从 Snowflake 拖动到面板中，以便可以联接数据集，也可以在 SQL 中编辑联接，并将 SQL 转换为单个节点。您可以将其他节点联接到已转换的节点。然后，您可以将已联接的数据集合并到一个节点，并将节点联接到不同的 Snowflake 数据集。最后，您可以将所选数据导入 Canvas。

使用以下步骤将数据从 Snowflake 导入到 Ama SageMaker zon Canvas。

1. 在 SageMaker Canvas 应用程序中，转到**数据集**页面。

1. 选择**导入数据**，然后从下拉菜单中选择**表格**。

1. 输入数据集的名称，然后选择**创建**。

1. 对于**数据来源**，打开下拉菜单并选择 **Snowflake**。

1. 选择**添加连接**。

1. 在**添加新的 Snowflake 连接**对话框中，指定您的 Snowflake 凭证。对于**身份验证方法**，请选择以下选项之一：
   + **基本 - 用户名密码** - 提供您的 Snowflake 帐户 ID、用户名和密码。
   + **ARN** — 为了更好地保护您的 Snowflake 凭证，请提供包含您的凭据的密钥的 ARN。 AWS Secrets Manager 有关更多信息，请参阅*AWS Secrets Manager 用户指南*中的[创建 AWS Secrets Manager 密钥](https://docs.aws.amazon.com/secretsmanager/latest/userguide/create_secret.html)。

     您的密钥应包含以以下 JSON 格式存储的 Snowflake 凭证：

     ```
     {"accountid": "ID",
     "username": "username",
     "password": "password"}
     ```
   + **OAuth**— OAuth 允许您在不提供密码的情况下进行身份验证，但需要额外的设置。有关为 Snowflake 设置 OAuth 凭据的更多信息，请参阅。[使用设置与数据源的连接 OAuth](canvas-setting-up-oauth.md)

1. 选择**添加连接**。

1. 从显示连接名称的选项卡中，将要导入的 .csv 文件拖动到**拖放表以导入**窗格。

1. 可选：将其他表拖到导入窗格中。您可以使用用户界面来联接表。要使联接更具体，请选择**在 SQL 中编辑**。

1. 可选：如果您使用 SQL 查询数据，则可以选择**上下文**通过指定以下内容的值来向连接添加上下文：
   + **数据仓库**
   + **数据库**
   + **架构**

   向连接添加上下文可以更容易地指定未来的查询。

1. 选择**导入数据**。

下图显示了为 Snowflake 连接指定的字段的示例。

![\[Canvas 中的添加新的 Snowflake 连接对话框的界面截图。\]](http://docs.aws.amazon.com/zh_cn/sagemaker/latest/dg/images/studio/canvas/canvas-snowflake-connection.png)


下图显示了用于向连接添加上下文的页面。

![\[Canvas 中导入页面的界面截图，显示上下文对话框。\]](http://docs.aws.amazon.com/zh_cn/sagemaker/latest/dg/images/studio/canvas/canvas-connection-context.png)


下图显示了用于在 Snowflake 中联接数据集的页面。

![\[Canvas 中导入页面的界面截图，显示正在连接的数据集。\]](http://docs.aws.amazon.com/zh_cn/sagemaker/latest/dg/images/studio/canvas/canvas-snowflake-join.png)


下图显示了用于在 Snowflake 中编辑联接的 SQL 查询。

![\[Canvas 中导入页面上编辑 SQL 编辑器中的 SQL 查询界面截图。\]](http://docs.aws.amazon.com/zh_cn/sagemaker/latest/dg/images/studio/canvas/canvas-snowflake-edit-sql.png)


### 在 Canvas 中使用 SaaS 连接器
<a name="canvas-connecting-external-appflow"></a>

**注意**  
对于除 Snowflake 之外的 SaaS 平台，每个数据来源只能有一个连接。

管理员必须先进行身份验证并创建与数据来源的连接，然后您才能从 SaaS 平台导入数据。有关管理员如何创建与 SaaS 平台的连接的更多信息，请参阅《[亚马逊* AppFlow 用户指南》中的 “管理亚马逊 AppFlow *连接](https://docs.aws.amazon.com/appflow/latest/userguide/connections.html)”。

如果您是首次使用亚马逊 AppFlow 的管理员，请参阅《*亚马逊 AppFlow 用户指南*》中的[入门](https://docs.aws.amazon.com/appflow/latest/userguide/getting-started.html)。

要从 SaaS 平台导入数据，您可以按照标准的[导入表格数据](canvas-import-dataset.md#canvas-import-dataset-tabular)过程进行操作，该过程向您展示了如何将表格数据集导入到 Canvas 中。