

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

# 创建工作流
<a name="workflows-creating"></a>

在开始之前，请确保已向角色 `LakeFormationWorkflowRole` 授予所需的数据权限和数据位置权限。这样，工作流就可以在数据目录中创建元数据表，并将数据写入 Amazon S3 中的目标位置。有关更多信息，请参阅[（可选）为工作流创建 IAM 角色](initial-lf-config.md#iam-create-blueprint-role)和 [Lake Formation 权限概述](lf-permissions-overview.md)。

**注意**  
Lake Formation 使用 `GetTemplateInstance`、`GetTemplateInstances` 和 `InstantiateTemplate` 操作根据蓝图创建工作流。这些操作不对外公开，仅在内部使用，用于代表您创建资源。您会收到用于创建工作流的 CloudTrail 事件。

**通过蓝图创建工作流**

1. 通过 [https://console.aws.amazon.com/lakeformation/](https://console.amazonaws.cn/lakeformation/) 打开 Amazon Lake Formation 控制台。以数据湖管理员或具有数据工程师权限的用户身份登录。有关更多信息，请参阅[Lake Formation 角色和 IAM 权限参考](permissions-reference.md)。

1. 在导航窗格中，选择**蓝图**，然后选择**使用蓝图**。

1. 在**使用蓝图**页面上，选择一个磁贴以选择蓝图类型。

1. 在**导入来源**下，指定数据来源。

   如果要从 JDBC 源导入，请指定以下内容：
   + ****数据库连接**** - 从列表中选择一个连接。使用 Amazon Glue 控制台创建其他连接。连接中的 JDBC 用户名和密码决定了工作流有权访问的数据库对象。
   + ****来源数据路径**** - 输入 *<database>*/*<schema>*/*<table>* 或 *<database>*/*<table>*，具体取决于数据库产品。Oracle Database 和 MySQL 不支持路径中的架构。您可以用百分比 (%) 字符替换 *<schema>* 或 *<table>*。例如，对于系统标识符 (SID) 为 `orcl` 的 Oracle 数据库，输入 `orcl/%` 以导入连接中指定的用户有权访问的所有表。
**重要**  
此字段区分大小写。如果任何组件存在大小写不匹配的情况，则工作流将失败。

     如果指定 MySQL 数据库，则 Amazon Glue ETL 默认使用 Mysql5 JDBC 驱动程序，因此 MySQL8 不受原生支持。您可以将 ETL 作业脚本编辑为使用 `customJdbcDriverS3Path` 参数，如《Amazon Glue 开发人员指南》中的 [JDBC connectionType 值](https://docs.amazonaws.cn/glue/latest/dg/aws-glue-programming-etl-connect.html#aws-glue-programming-etl-connect-jdbc)中所述，以使用支持 MySQL8 的其他 JDBC 驱动程序。**

   如果要从日志文件导入，请确保您为工作流指定的角色（“工作流角色”）具有访问数据来源所需的 IAM 权限。例如，要导入 Amazon CloudTrail 日志，用户必须具有 `cloudtrail:DescribeTrails` 和 `cloudtrail:LookupEvents` 权限才能在创建工作流时查看 CloudTrail 日志列表，并且工作流角色必须具有对 Amazon S3 中 CloudTrail 位置的权限。

1. 请执行以下操作之一：
   + 对于**数据库快照**蓝图类型，可以选择通过指定一个或多个排除模式来识别要导入的一部分数据。这些排除模式是 Unix 风格的 `glob` 模式。它们将存储为由工作流创建的表的属性。

     有关可用排除模式的详细信息，请参阅《Amazon Glue 开发人员指南》中的[包含和排除模式](https://docs.amazonaws.cn/glue/latest/dg/define-crawler.html#crawler-data-stores-exclude)。**
   + 对于**增量数据库**蓝图类型，请指定以下字段。为每个要导入的表添加一行。  
**表名称**  
要导入的表。必须全部小写。  
**书签键**  
定义书签键的列名的逗号分隔列表。如果为空，则使用主键确定新数据。每列的大小写必须与数据来源中定义的大小写匹配。  
仅当主键按顺序递增或递减（无间隙）时，主键才有资格成为默认书签键。如果要使用主键作为书签键并且它有间隙，则必须将主键列命名为书签键。  
**书签顺序**  
选择**升序**时，值大于书签值的行将被标识为新行。选择**降序**时，值小于书签值的行将被标识为新行。  
**分区方案**  
（可选）分区键列列表，用斜杠 (/) 分隔。示例：` year/month/day`。  
![\[控制台的“增量数据”部分包括以下字段：“表名称”、“书签键”、“书签顺序”、“分区方案”。您可以添加或删除行，其中每行用于不同的表。\]](http://docs.amazonaws.cn/lake-formation/latest/dg/images/incremental-data.png)

     有关更多信息，请参阅《Amazon Glue 开发人员指南》中的[使用作业书签来跟踪已处理的数据](https://docs.amazonaws.cn/glue/latest/dg/monitor-continuations.html)。**

1. 在**导入目标**下，指定目标数据库、目标 Amazon S3 位置和数据格式。

   确保工作流角色对数据库和 Amazon S3 目标位置具有所需的 Lake Formation 权限。
**注意**  
目前，蓝图不支持加密目标位置的数据。

1. 选择导入频率。

   您可以使用**自定义**选项指定 `cron` 表达式。

1. 在**导入选项**下：

   1. 输入工作流名称。

   1. 对于角色，选择您在[（可选）为工作流创建 IAM 角色](initial-lf-config.md#iam-create-blueprint-role)中创建的角色 `LakeFormationWorkflowRole`。

   1. （可选）指定表前缀。该前缀位于工作流创建的数据目录表的名称之前。

1. 选择**创建**，然后等待控制台报告已成功创建工作流。
**提示**  
您是否收到了以下错误消息？  
`User: arn:aws:iam::<account-id>:user/<username> is not authorized to perform: iam:PassRole on resource:arn:aws:iam::<account-id>:role/<rolename>...`  
如果是，请检查您是否已在所有策略中将 *<account-id>* 替换为有效的 Amazon 账号。

**另请参阅：**  
[Lake Formation 中的蓝图和工作流](workflows-about.md)