

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

# 解决工作流程问题
<a name="workflow-issues"></a>

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

**Topics**
+ [对托管工作流程问题进行故障排除](#workflow-errors)
+ [对工作流程解密问题进行故障排除](#workflows-decrypt-issues)

## 对托管工作流程问题进行故障排除
<a name="workflow-errors"></a>

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

**Topics**
+ [使用 Amazon 解决与工作流程相关的错误 CloudWatch](#workflows-cloudwatch-errors)
+ [对工作流程复制错误进行故障排除](#source-bucket-region)

### 使用 Amazon 解决与工作流程相关的错误 CloudWatch
<a name="workflows-cloudwatch-errors"></a>

**描述**

 如果您的工作流程出现问题，可以使用 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 用户指南中的使用订阅实时处理日志*[数据](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/Subscriptions.html)[以及筛选和模式语法](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/FilterAndPatternSyntax.html)。

*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](https://aws.amazon.com/contact-us)

*启动工作流程时服务失败*

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

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

### 对工作流程复制错误进行故障排除
<a name="source-bucket-region"></a>

**描述**

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

```
{
  "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 区域存储桶中。

## 对工作流程解密问题进行故障排除
<a name="workflows-decrypt-issues"></a>

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

**Topics**
+ [解决匿名收件人加密问题](#workflows-decrypt-anonymous)
+ [解决签名加密文件出现的错误](#workflows-decrypt-signed)
+ [对 FIPS 算法的错误进行故障排除](#workflows-decrypt-fips)

### 解决匿名收件人加密问题
<a name="workflows-decrypt-anonymous"></a>

**描述**

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

**原因**

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

**解决方案**

始终使用`-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 的情况下。

### 解决签名加密文件出现的错误
<a name="workflows-decrypt-signed"></a>

**描述**

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

```
"Encrypted file with signed message unsupported"
```

**原因**

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

**解决方案**

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

### 对 FIPS 算法的错误进行故障排除
<a name="workflows-decrypt-fips"></a>

**描述**

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

```
{
   "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]
   ```

1. 标识要编辑的密钥。在上一步所示的示例中，ID 为 `wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY`。

1. 运行 `gpg ‐‐edit-key wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY`。

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

1. 在 `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
   ```

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

1. 我们希望编辑密钥以保留除 **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)
   ```

1. 输入 `y` 进行更新，然后在系统提示确认更改时输入密码。

1. 保存更改。

   ```
   gpg> save
   ```

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