

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 對工作流程問題進行故障診斷
<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>

**Description**

 如果您的工作流程發生問題，您可以使用 Amazon CloudWatch 調查原因。

**原因**

可能有幾個原因。使用 Amazon CloudWatch Logs 進行調查。

**解決方案**

Transfer 系列會向 CloudWatch Logs 發出工作流程執行狀態。下列類型的工作流程錯誤可能會出現在 CloudWatch Logs 中：
+ `"type": "StepErrored"`
+ `"type": "ExecutionErrored"`
+ `"type": "ExecutionThrottled"`
+ `"Service failure on starting workflow"`

您可以使用不同的篩選條件和模式語法來篩選工作流程的執行日誌。例如，您可以在 CloudWatch 日誌中建立日誌篩選條件，以擷取包含 **ExecutionErrored** 訊息的工作流程執行日誌。如需詳細資訊，請參閱《*Amazon CloudWatch Logs 使用者指南》中的*[使用訂閱和篩選條件和模式語法即時處理日誌資料](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/Subscriptions.html)。 [https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/FilterAndPatternSyntax.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`訊息。例如，如果您已在指定的工作流程中設定單一步驟，而且如果該步驟無法執行，則整體工作流程會失敗。

*執行調節*

如果工作流程以比系統可支援的更快的速度觸發，則會調節執行。此日誌訊息指出您必須降低工作流程的執行速率。如果您無法縮減工作流程執行速率，請聯絡 AWS 支援 聯絡 。 [AWS](https://aws.amazon.com/contact-us)

*啟動工作流程時的服務失敗*

每當您從伺服器移除工作流程並將其取代為新的工作流程，或更新伺服器組態 （這會影響工作流程的執行角色） 時，您必須等待大約 10 分鐘，才能執行新的工作流程。Transfer Family 伺服器會快取工作流程詳細資訊，伺服器重新整理其快取需要 10 分鐘。

此外，您必須登出任何作用中的 SFTP 工作階段，然後在 10 分鐘的等待期間之後重新登入，以查看變更。

### 對工作流程複製錯誤進行故障診斷
<a name="source-bucket-region"></a>

**Description**

 如果您執行的工作流程包含複製上傳檔案的步驟，您可能會遇到下列錯誤：

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

**Description**

您的解密工作流程在處理特定加密檔案時失敗，但適用於其他檔案。

**原因**

檔案可能已加密，但未指定收件人 （匿名加密），讓工作流程難以判斷要用於解密的金鑰。

**解決方案**

一律使用 `-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>

**Description**

您的解密工作流程失敗，您會收到下列錯誤：

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

**原因**

Transfer Family 目前不支援簽署加密的檔案。

**解決方案**

在 PGP 用戶端中，如果有簽署加密檔案的選項，請務必清除選取項目，因為 Transfer Family 目前不支援簽署加密檔案。

### FIPS 演算法的故障診斷錯誤
<a name="workflows-decrypt-fips"></a>

**Description**

您的解密工作流程失敗，日誌訊息類似以下內容：

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

重新執行解密工作流程之前，您必須使用編輯的金鑰重新加密檔案。