使用预定义的步骤 - Amazon Transfer Family
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

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

使用预定义的步骤

创建工作流程时,可以选择添加本主题中讨论的以下预定义步骤之一。您还可以选择添加自己的自定义文件处理步骤。有关更多信息,请参阅使用自定义文件处理步骤

复制文件

复制文件步骤在新的 Amazon S3 位置创建上传文件的副本。目前,您只能在 Amazon S3 中使用复制文件步骤。

以下复制文件步骤将文件复制到file-test目标存储桶中的test文件夹中。

如果复制文件步骤不是工作流程的第一步,则可以指定文件位置。通过指定文件位置,您可以复制上一步中使用的文件或上传的原始文件。您可以使用此功能制作原始文件的多个副本,同时保持源文件完好无损,用于文件存档和记录保留。有关示例,请参阅 示例标记和删除工作流程

提供存储桶和密钥的详细信息

您必须为复制文件步骤的目标提供存储段名称和密钥。密钥可以是路径名或文件名。将密钥视为路径名还是文件名取决于密钥是否以正斜杠 (/) 字符结尾。

如果最后一个字符是/,则您的文件将被复制到该文件夹,并且其名称不会更改。如果最后一个字符是字母数字,则您上传的文件将重命名为密钥值。在这种情况下,如果同名文件已经存在,则现有文件将被新文件覆盖。

例如,如果您的密钥值为test/,则上传的文件将被复制到该文件test夹。如果您的密钥值为test/today,则您上传的每个文件都将复制到该test文件夹today中名为的文件中,后续每个文件都会覆盖前一个文件。

注意

Amazon S3 支持存储桶和对象且没有层次结构。但是,您可以在对象键名称中使用前缀和分隔符来暗示层次结构,并以类似于文件夹的方式组织数据。

在复制文件步骤中使用命名变量

在复制文件步骤中,您可以使用变量将文件动态复制到用户特定的文件夹中。目前,您可以使用${transfer:UserName}${transfer:UploadDate}作为变量将文件复制到正在上传文件的给定用户的目标位置,也可以根据当前日期将文件复制到目标位置。

在以下示例中,如果用户richard-roe上传了文件,则该文件将被复制到该file-test2/richard-roe/processed/文件夹中。如果用户mary-major上传了文件,则该文件会被复制到该file-test2/mary-major/processed/文件夹中。

同样,您可以使用${transfer:UploadDate}变量将文件复制到以当前日期命名的目标位置。在以下示例中,如果您将目的地设置为 2022 年 2 月 1${transfer:UploadDate}/processed 日,则上传的文件将复制到该file-test2/2022-02-01/processed/文件夹中。

解密文件

解密步骤解密作为工作流程一部分上传到 Amazon S3 或 Amazon EFS 的加密文件。有关配置解密的详细信息,请参阅在工作流程中使用 PGP 解密

为工作流程创建解密步骤时,必须指定解密文件的目的地。如果目标位置已存在文件,则还必须选择是否覆盖现有文件。您可以使用 Amazon Logs 监控解密工作流程结果并实时获取每个文件的审核 CloudWatch 日志。

为步骤选择解密文件类型后,将显示配置参数页面。填写 “配置 PGP 解密参数” 部分的值。

可用选项如下所示:

  • 步骤名称-输入步骤的描述性名称。

  • 文件位置-通过指定文件位置,您可以解密上一步中使用的文件或上传的原始文件。

    注意

    如果此步骤是工作流的第一步,则此参数不可用。

  • 解密文件的目的地 — 选择 Amazon S3 存储桶或 Amazon EFS 文件系统作为解密文件的目的地。

    • 如果您选择 Amazon S3,则必须提供目标存储桶名称和目标key prefix。要按用户名参数化目标key prefix,请在目标key pref ix 中输入${Transfer:UserName}

    • 如果您选择 Amazon EFS,则必须提供目标文件系统和路径。

    注意

    您在此处选择的存储选项必须与与此工作流关联的 Transfer Family 服务器所使用的存储系统相匹配。否则,当您尝试运行此工作流时,您将收到错误。

  • 覆盖现有文件-要覆盖与正在保存的文件同名的现有文件,请选中此复选框。要在现有文件同名的情况下创建新文件,请清除此复选框。

以下屏幕截图显示了您可以为解密文件步骤选择的选项示例。


                    Amazon Transfer Family控制台,显示 “配置 PGP 解密参数” 部分以及示例值。

标记文件

要标记传入文件以进行进一步的下游处理,请使用标记步骤。输入要分配给传入文件的标签的值。目前,仅当您使用 Amazon S3 作为 Transfer Family 服务器存储时,才支持标签操作。

以下示例标签步骤分别将scan_outcome和分配clean为标签键和值。

删除文件

要从先前的工作流程步骤中删除已处理的文件或删除最初上传的文件,请使用删除文件步骤。

示例标记和删除工作流程

以下示例说明了一个工作流程,该工作流程用于标记需要由下游应用程序(例如数据分析平台)处理的传入文件。为传入文件添加标签后,工作流程会删除最初上传的文件以节省存储成本。

Console
标记和移动工作流程示例
  1. 通过 https://console.aws.amazon.com/transfer/ 打开Amazon Transfer Family主机。

  2. 在左侧导航窗格中,选择工作流

  3. 在 “工作流” 页面上,选择 “创建工作流程”。

  4. 在 Cre ation 工作流页面,输入描述。此描述显示在 “工作” 页面上。

  5. 添加第一步(复制)。

    1. 在 “标称步长” 部分中,选择 “添加步长”。

    2. 选择 “复制文件”,然后选择 “下一步”。

    3. 输入步骤名称,然后选择目标存储段和key prefix。

    4. 选择 “下一步”,然后查看该步骤的详细信息。

    5. 选择 “创建步骤” 以添加该步骤并继续。

  6. 添加第二步(标签)。

    1. 在 “标称步长” 部分中,选择 “添加步长”。

    2. 选择 “标记文件”,然后选择 “下一步”。

    3. 输入步骤名称。

    4. 对于 “文件位置”,选择 “标记在上一步中创建的文件”。

    5. 输入

    6. 选择 “下一步”,然后查看该步骤的详细信息。

    7. 选择 “创建步骤” 以添加该步骤并继续。

  7. 添加第三步(删除)。

    1. 在 “标称步长” 部分中,选择 “添加步长”。

    2. 选择 “删除文件”,然后选择 “下一步”。

    3. 输入步骤名称。

    4. 对于 “文件位置”,选择 “删除原始源文件”。

    5. 选择 “下一步”,然后查看该步骤的详细信息。

    6. 选择 “创建步骤” 以添加该步骤并继续。

  8. 查看工作流配置,然后选择 “创建工作流”。

CLI
标记和移动工作流程示例
  1. 将以下代码保存到文件中;例如,tagAndMoveWorkflow.json。将user input placeholder每个信息。

    [ { "Type": "COPY", "CopyStepDetails": { "Name": "CopyStep", "DestinationFileLocation": { "S3FileLocation": { "Bucket": "DOC-EXAMPLE-BUCKET", "Key": "test/" } } } }, { "Type": "TAG", "TagStepDetails": { "Name": "TagStep", "Tags": [ { "Key": "name", "Value": "demo" } ], "SourceFileLocation": "${previous.file}" } }, { "Type": "DELETE", "DeleteStepDetails":{ "Name":"DeleteStep", "SourceFileLocation": "${original.file}" } } ]

    第一步将上传的文件复制到新的 Amazon S3 位置。第二步向复制到新位置的文件 (previous.file) 添加标签(键值对)。最后,第三步删除原始文件 (original.file)。

  2. 从保存的文件创建工作流程。将user input placeholder每个信息。

    aws transfer create-workflow --description "short-description" --steps file://path-to-file --region region-ID

    例如:

    aws transfer create-workflow --description "copy-tag-delete workflow" --steps file://tagAndMoveWorkflow.json --region us-east-1
  3. 更新现有服务器。

    注意

    此步骤假设您已经有一台 Transfer Family 服务器并且想要将工作流与其关联。如果不是,请参阅创建服务器。将user input placeholder每个信息。

    aws transfer update-server --server-id server-ID --region region-ID --workflow-details '{"OnUpload":[{ "WorkflowId": "workflow-ID","ExecutionRole": "execution-role-ARN"}]}'

    例如:

    aws transfer update-server --server-id s-1234567890abcdef0 --region us-east-2 --workflow-details '{"OnUpload":[{ "WorkflowId": "w-abcdef01234567890","ExecutionRole": "arn:aws:iam::111111111111:role/nikki-wolf-execution-role"}]}'