

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

# AWS Transfer Family 托管工作流程
<a name="transfer-workflows"></a>

 AWS Transfer Family 支持文件处理的托管工作流程。借助托管工作流程，您可以在通过 SFTP、FTPS 或 FTP 传输文件后启动工作流程。使用此功能，您可以协调文件处理所需的所有必要步骤，从而安全且经济高效地满足 business-to-business (B2B) 文件交换的合规性要求。此外，您还可以从 end-to-end审计和可见性中受益。

![\[显示托管工作流如何协助文件处理的流程图。\]](http://docs.aws.amazon.com/zh_cn/transfer/latest/userguide/images/workflows-diagram.png)


通过协调文件处理任务，托管工作流可帮助您在下游应用程序使用数据之前对其进行预处理。此类文件处理任务可能包括：
+ 将文件移动到用户特定的文件夹。
+ 作为工作流的一部分对文件进行解密。
+ 标记文件
+ 通过创建 AWS Lambda 函数并将其附加到工作流程来执行自定义处理。
+ 文件成功传输后发送通知。（有关详细介绍此用例的博客文章，请参阅[使用 AWS Transfer Family 托管工作流程自定义文件传送通知](https://aws.amazon.com/blogs/storage/customize-file-delivery-notifications-using-aws-transfer-family-managed-workflows/)。）

要快速复制和标准化组织中多个业务部门的常见上传后文件处理任务，您可以使用基础设施即代码 (IaC) 来部署工作流程。您可以指定要在完整上传的文件上启动托管工作流程。对于因会话过早断开连接而仅部分上传的文件，您也可以指定不同的托管工作流程。内置的异常处理功能可帮助您对文件处理结果做出快速反应，同时让您能够控制如何处理故障。此外，每个工作流程步骤都会生成详细的日志，您可以对其进行审核以跟踪数据沿袭。

要开始使用 ，请执行以下任务：

1. 根据您的要求将工作流程设置为包含预处理操作，例如复制、标记和其他步骤。有关详细信息，请参阅 [创建工作流](create-workflow.md)。

1. 配置执行角色，Transfer Family 会使用该角色来运行工作流程。有关详细信息，请参阅 [适用于工作流程的 IAM 策略](workflow-execution-role.md)。

1. 将工作流程映射到服务器，以便在文件到达时，实时评估和启动此工作流程中指定的操作。有关详细信息，请参阅 [配置和运行工作流程](create-workflow.md#configure-workflow)。

**相关信息**
+ 要监控您的工作流程执行情况，请参阅 [使用 T CloudWatch ransfer Family 服务器的指标](metrics.md)。
+ 有关详细的执行日志和故障排除信息，请参阅 [使用 Amazon 解决与工作流程相关的错误 CloudWatch](workflow-issues.md#workflows-cloudwatch-errors)。
+ Transfer Family 提供了一篇博客文章和一个研讨会，引导你完成文件传输解决方案的构建。该解决方案利用托管 SFTP/FTPS 终端节点 AWS Transfer Family ，利用 Amazon Cognito 和 DynamoDB 进行用户管理。

  该博客文章可在[使用 Amazon Cognito 作为身份提供商 AWS Transfer Family 和 Amazon S3 上](https://aws.amazon.com/blogs/storage/using-amazon-cognito-as-an-identity-provider-with-aws-transfer-family-and-amazon-s3/)找到。您可以[在此](https://catalog.workshops.aws/transfer-family-sftp/en-US)处查看研讨会的详细信息。
+ 以下视频简要介绍了 Transfer Family 托管工作流。  
[![AWS Videos](http://img.youtube.com/vi/https://www.youtube.com/embed/t-iNqCRospw/0.jpg)](http://www.youtube.com/watch?v=https://www.youtube.com/embed/t-iNqCRospw)
+ [以下研讨会提供动手实验来构建全自动和事件驱动的工作流程，包括将文件传输到外部 SFTP 服务器或从外部 SFTP 服务器传输到 Amazon S3，以及这些文件的常见预处理和后处理：事件驱动的 MFT 研讨会。](https://catalog.us-east-1.prod.workshops.aws/workshops/e55c90e0-bbb0-47e1-be83-6bafa3a59a8a/en-US)

  该视频提供了本次研讨会的详细介绍。  
[![AWS Videos](http://img.youtube.com/vi/https://www.youtube.com/embed/oojopisG4lA/0.jpg)](http://www.youtube.com/watch?v=https://www.youtube.com/embed/oojopisG4lA)

**Topics**
+ [创建工作流](create-workflow.md)
+ [使用预定义的步骤](nominal-steps-workflow.md)
+ [使用自定义文件处理步骤](custom-step-details.md)
+ [适用于工作流程的 IAM 策略](workflow-execution-role.md)
+ [工作流程的异常处理](#exception-workflow)
+ [监控工作流程执行情况](cloudwatch-workflow.md)
+ [通过模板创建工作流](workflow-template.md)
+ [从 Transfer Family 服务器中移除工作流](#remove-workflow-association)
+ [托管工作流限制和局限性](#limitations-workflow)

有关托管工作流程入门的更多帮助，请参阅以下资源：
+ [AWS Transfer Family 托管工作流程](https://www.youtube.com/watch?v=t-iNqCRospw)演示视频
+ [使用 AWS Transfer Family 工作流程构建云原生文件传输平台](https://aws.amazon.com/blogs/architecture/building-a-cloud-native-file-transfer-platform-using-aws-transfer-family-workflows/)博客文章

## 工作流程的异常处理
<a name="exception-workflow"></a>

如果在工作流程执行过程中出现任何错误，则会执行您指定的异常处理步骤。为工作流指定错误处理步骤的方式与为工作流指定标称步骤的方式相同。例如，假设您已按名义步骤配置了自定义处理来验证传入的文件。如果文件验证失败，则异常处理步骤可以向管理员发送电子邮件。

以下示例工作流程包含两个步骤：
+ 检查上传文件是否为 CSV 格式的标称步骤
+ 一个异常处理步骤，用于在上传的文件不是 CSV 格式且标称步骤失败时发送电子邮件

要启动异常处理步骤，名义步骤中的 AWS Lambda 函数必须使用响应。`Status="FAILURE"`有关工作流错误处理的更多信息，请参阅 [使用自定义文件处理步骤](custom-step-details.md)。

![\[\]](http://docs.aws.amazon.com/zh_cn/transfer/latest/userguide/images/workflow-exception-sample.png)


## 从 Transfer Family 服务器中移除工作流
<a name="remove-workflow-association"></a>

如果您已将工作流程与 Transfer Family 服务器关联，而现在想要移除该关联，则可以使用控制台或以编程方式执行此操作。

------
#### [ Console ]

**若要从 Transfer Family 服务器中移除工作流**

1. 打开 AWS Transfer Family 控制台，网址为[https://console.aws.amazon.com/transfer/](https://console.aws.amazon.com/transfer/)。

1. 在左侧导航窗格中选择**服务器**。

1. 在“**服务器 ID**”列中选择服务器的标识符。

1. 在服务器的详细信息页面上，向下滚动到**其他详细信息**部分，然后选择**编辑**。

1. 在**编辑其他详细信息**页面中的**托管工作流程**部分，清除所有设置的信息：
   + 从**用于完整文件上载的工作流**的工作流列表中选择短划线 (-)。
   + 如果尚未清除，从**用于部分文件上载的工作流**的工作流列表中选择短划线 (-)。
   +  从**托管工作流程执行角色**的角色列表中选择短划线 (-)。

   如果看不到破折号，请向上滚动直到看到它，因为它是每个菜单中的第一个值。

   该部分应该类似以下内容。  
![\[托管工作流程窗格，显示所有已清除的参数。\]](http://docs.aws.amazon.com/zh_cn/transfer/latest/userguide/images/workflows-remove-from-server.png)

1. 要保存更改，请向下滚动并选择**保存**。

------
#### [ CLI ]

您可以使用 `update-server`（或 `UpdateServer` for API）调用，并为 `OnUpload` 和 `OnPartialUpload` 参数提供空参数。

从中 AWS CLI，运行以下命令：

```
aws transfer update-server --server-id your-server-id --workflow-details '{"OnPartialUpload":[],"OnUpload":[]}'
```

将 `your-server-id` 替换为服务器的 ID。例如，如果您的服务器 ID 是 `s-01234567890abcdef`，则命令如下所示：

```
aws transfer update-server --server-id s-01234567890abcdef --workflow-details '{"OnPartialUpload":[],"OnUpload":[]}'
```

------

## 托管工作流限制和局限性
<a name="limitations-workflow"></a>

**限制**

以下限制目前适用于 AWS Transfer Family的上传后处理工作流程。
+ 不支持跨账户和跨区域 AWS Lambda 功能。但是，您可以跨账户复制，前提是您的 AWS Identity and Access Management (IAM) 策略配置正确。
+ 对于所有工作流程步骤，工作流程访问的任何 Amazon S3 存储桶都必须与工作流程本身位于同一区域。
+ 对于解密步骤，解密目标必须与区域和后备存储的来源相匹配（例如，如果要解密的文件存储在 Amazon S3 中，则指定的目标也必须在 Amazon S3 中）。
+ 仅支持异步自定义步骤。
+ 自定义步骤超时值是近似值。也就是说，超时所需的时间可能比指定时间稍长。此外，工作流程依赖于 Lambda 函数。因此，如果函数在执行过程中出现延迟，则工作流程不会意识到延迟。
+ 如果您超过了限制限制，Transfer Family 不会将工作流程操作添加到队列中。
+ 不会为大小为 0 的文件启动工作流程。大小大于 0 的文件会启动关联的工作流程。
+ 您可以将文件处理工作流程附加到使用该 AS2 协议的 Transfer Family 服务器：但是， AS2 消息不会执行附加到服务器的工作流程。

**限制**

 此外，以下功能限制适用于 Transfer Family 的工作流程：
+ 每个区域、每个账户的工作流程数量限制为 10。
+ 自定义步骤的最大超时时间为 30 分钟。
+ 工作流中的最大步骤数为 8。
+ 每个工作组的最大标签数是 50。
+ 每个工作流程中包含解密步骤的最大并发执行数为 250 个。
+ 在每台 Transfer Family 服务器上，每位用户最多可存储 3 个 PGP 私钥。
+ 数据文件的最大大小为 10 GB。
+ 我们使用容量暴增为 100、再填充率为 1 的[令牌桶](https://en.wikipedia.org/wiki/Token_bucket)系统来限制新的执行率。
+ 无论何时从服务器上移除工作流程并用新的工作流程替换它，或者更新服务器配置（这会影响工作流程的执行角色），都必须等待大约 10 分钟才能执行新的工作流程。Transfer Family 服务器会缓存工作流程细节，服务器需要 10 分钟才能刷新其缓存。

  此外，您必须注销所有活动的 SFTP 会话，然后等待 10 分钟重新登录才能看到更改。