解决工作流程问题 - AWS Transfer Family

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

解决工作流程问题

本节介绍托管工作流程问题的可能解决方案。

对托管工作流程问题进行故障排除

本节介绍以下工作流程问题的可能解决方案。

使用 Amazon 解决与工作流程相关的错误 CloudWatch

描述

如果您的工作流程出现问题,可以使用 Amazon CloudWatch 来调查原因。

原因

可能有多种原因。使用 Amazon CloudWatch 日志进行调查。

解决方案

Transfer Family 会将工作流程执行状态发送到 CloudWatch 日志中。 CloudWatch 日志中可能会出现以下类型的工作流程错误:

  • "type": "StepErrored"

  • "type": "ExecutionErrored"

  • "type": "ExecutionThrottled"

  • "Service failure on starting workflow"

您可以使用不同的筛选器和模式语法来筛选工作流程的执行日志。例如,您可以在日志中创建日志过滤器,以捕获包含该ExecutionErrored消息的工作流程执行日志。 CloudWatch 有关详细信息,请参阅 Amazon Log CloudWatch s 用户指南中的使用订阅实时处理日志数据以及筛选和模式语法

StepErrored

2021-10-29T12:57:26.272-05:00 {"type":"StepErrored","details":{"errorType":"BAD_REQUEST","errorMessage":"Cannot tag Efs file","stepType":"TAG","stepName":"successful_tag_step"}, "workflowId":"w-abcdef01234567890","executionId":"1234abcd-56ef-78gh-90ij-1234klmno567", "transferDetails":{"serverId":"s-1234567890abcdef0","username":"lhr","sessionId":"1234567890abcdef0"}

此处,StepErrored 表示工作流程中的某个步骤产生了错误。在单个工作流程中,您可以配置多个步骤。此错误会告诉您错误发生在哪个步骤中,并提供错误消息。在此特定示例中,该步骤配置为标记文件;但是,不支持在 Amazon EFS 文件系统中标记文件,因此该步骤生成了一处错误。

ExecutionErrored

2021-10-29T12:57:26.618-05:00 {"type":"ExecutionErrored","details":{},"workflowId":"w-w-abcdef01234567890", "executionId":"1234abcd-56ef-78gh-90ij-1234klmno567","transferDetails":{"serverId":"s-1234567890abcdef0", "username":"lhr","sessionId":"1234567890abcdef0"}}

当工作流程无法执行任何步骤时,它会生成 ExecutionErrored 消息。例如,如果您在给定工作流程中配置了单个步骤,并且该步骤无法执行,则整个工作流程将失败。

Executionthrottled

如果工作流程的触发速度超过系统所能支持的速度,则执行受到限制。此日志消息表明您必须降低工作流程的执行速度。如果您无法降低工作流程执行率,请通过 Contact 联系 AWS 支持 。 AWS

启动工作流程时服务失败

无论何时从服务器上移除工作流程并用新的工作流程替换它,或者更新服务器配置(这会影响工作流程的执行角色),都必须等待大约 10 分钟才能执行新的工作流程。Transfer Family 服务器会缓存工作流程细节,服务器需要 10 分钟才能刷新其缓存。

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

对工作流程复制错误进行故障排除

描述

如果您正在执行的工作流程中包含复制已上传文件的步骤,则可能会遇到以下错误:

{ "type": "StepErrored", "details": { "errorType": "BAD_REQUEST", "errorMessage": "Bad Request (Service: Amazon S3; Status Code: 400; Error Code: 400 Bad Request; Request ID: request-ID; S3 Extended Request ID: request-ID Proxy: null)", "stepType": "COPY", "stepName": "copy-step-name" }, "workflowId": "workflow-ID", "executionId": "execution-ID", "transferDetails": { "serverId": "server-ID", "username": "user-name", "sessionId": "session-ID" } }

原因

源文件位于与目标存储桶不同 AWS 区域 的 Amazon S3 存储桶中。

解决方案

如果您正在执行包含复制步骤的工作流程,请确保源存储桶和目标存储桶位于同一 AWS 区域存储桶中。

对工作流程解密问题进行故障排除

本节介绍以下加密工作流程问题的可能解决方案。

解决匿名收件人加密问题

描述

处理某些加密文件时,您的解密工作流程会失败,但可以处理其他加密文件。

原因

文件可能是在没有指定收件人的情况下加密的(匿名加密),这使得工作流程很难确定使用哪个密钥进行解密。

解决方案

始终使用-r参数对非匿名收件人进行文件加密。例如:

gpg -e -r user@example.com --openpgp file.txt

要检查文件是使用特定收件人加密还是匿名加密,请使用以下--list-packets命令:

gpg --list-packets file.txt.gpg

此命令显示 GPG 加密文件的数据包结构,而不对其内容进行解密。查找包含收件人信息的输出,例如:

:pubkey enc packet: version 3, algo 1, keyid 1A2B3C4D5E6F7G8H

如果您看到 keyid 信息,则表示该文件已针对特定收件人进行了加密。如果缺少此信息,则该文件可能已被匿名加密,这可能会导致 Transfer Family 工作流程中的解密失败。

您也可以使用此命令来验证:

  • 使用了哪些加密算法

  • 压缩方法(如果有)

  • 创建时间戳

要查看 GPG 安装支持的密码算法列表,请使用:

gpg --version

这些信息可以帮助您确保使用的加密算法与 Transfer Family 工作流程兼容,尤其是在需要符合 FIPS 的情况下。

解决签名加密文件出现的错误

描述

您的解密工作流程失败,并且您收到以下错误:

"Encrypted file with signed message unsupported"

原因

Transfer Family 目前不支持对加密文件进行签名。

解决方案

在您的 PGP 客户端中,如果可以选择对加密文件进行签名,请务必清除该选项,因为 Transfer Family 目前不支持对加密文件进行签名。

对 FIPS 算法的错误进行故障排除

描述

解密工作流程失败,日志消息如下所示:

{ "type": "StepErrored", "details": { "errorType": "BAD_REQUEST", "errorMessage": "File encryption algorithm not supported with FIPS mode enabled.", "stepType": "DECRYPT", "stepName": "step-name" }, "workflowId": "workflow-ID", "executionId": "execution-ID", "transferDetails": { "serverId": "server-ID", "username": "user-name", "sessionId": "session-ID" } }

原因

Transfer Family 服务器已启用 FIPS 模式和相关的解密工作流程步骤。在上传到 Transfer Family 服务器之前对文件进行加密时,加密客户端可能会生成使用非 FIPS 批准的对称加密算法的加密文件。在这种情况下,工作流程无法解密文件。在以下示例中,GnuPG 版本 2.4.0 使用 OCB(一种非 FIPS 分组密码模式)来加密文件:这会导致工作流程失败。

解决方案

您必须编辑用于加密文件的 GPG 密钥,然后对其重新加密。以下过程描述了您必须采取的步骤。

编辑 PGP 密钥
  1. 通过运行 gpg ‐‐list-keys 来确定必须编辑的密钥

    这将返回密钥列表。每个密钥的详细信息类似于以下内容:

    pub ed25519 2022-07-07 [SC] wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY uid [ultimate] Mary Major <marymajor@example.com> sub cv25519 2022-07-07 [E]
  2. 标识要编辑的密钥。在上一步所示的示例中,ID 为 wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY

  3. 运行 gpg ‐‐edit-key wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY

    系统以有关 GnuPG 程序和指定密钥的详细信息进行响应。

  4. gpg> 提示符下,输入 showpref。将返回以下详细信息:

    [ultimate] (1). Mary Major <marymajor@example.com> Cipher: AES256, AES192, AES, 3DES AEAD: OCB Digest: SHA512, SHA384, SHA256, SHA224, SHA1 Compression: ZLIB, BZIP2, ZIP, Uncompressed Features: MDC, AEAD, Keyserver no-modify

    请注意,已列出存储在密钥上的首选算法。

  5. 我们希望编辑密钥以保留除 OCB 之外的所有算法。运行 setpref 命令,指定要保留的所有算法:

    gpg> setpref AES256, AES192,AES,3DES,SHA512, SHA384, SHA256, SHA224, SHA1,ZLIB, BZIP2, ZIP, Uncompressed

    这将返回以下详细信息:

    Set preference list to: Cipher: AES256, AES192, AES, 3DES AEAD: Digest: SHA512, SHA384, SHA256, SHA224, SHA1 Compression: ZLIB, BZIP2, ZIP, Uncompressed Features: MDC, Keyserver no-modify Really update the preferences? (y/N)
  6. 输入 y 进行更新,然后在系统提示确认更改时输入密码。

  7. 保存更改。

    gpg> save

在重新运行解密工作流程之前,必须使用编辑后的密钥重新加密文件。