

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

# AWS Transfer Family 適用於 AS2 的
<a name="as2-for-transfer-family"></a>

適用性聲明 2 (AS2) 是 RFC 定義的檔案傳輸規格，其中包含強大的訊息保護和驗證機制。保護傳輸中的 AS2 承載會使用密碼編譯訊息語法 (CMS) 搭配加密和數位簽章，以提供資料保護和對等身分驗證。已簽署的訊息處置通知 (MDN) 回應承載提供驗證 （不可否認），指出訊息已接收並成功解密。

AS2 通訊協定對於具有合規要求的工作流程至關重要，這些工作流程依賴於在協定中內建的資料保護和安全性功能。 AWS Transfer Family AS2 端點經過 [Drummond 認證](https://aws.amazon.com/about-aws/whats-new/2023/06/aws-transfer-family-drummond-group-as2-certification/)，可讓零售、生命科學、製造、金融服務和公用程式等產業的客戶安全地與其業務合作夥伴交易。

當您搭配 Transfer Family 使用 AS2 時，交易的資料可在 中 AWS 原生存取：
+ 處理、分析和機器學習
+ 與企業資源規劃 (ERP) 系統整合
+ 與客戶關係管理 (CRM) 系統整合

若要與具有AS2-enabled 之伺服器的合作夥伴交換檔案，您必須：
+ 產生用於加密的公有/私有金鑰對
+ 產生公有/私有金鑰對以進行簽署
+ 與您的合作夥伴交換公有金鑰

**重要**  
目前不支援 HTTPS AS2 伺服器端點。您必須負責終止 TLS。

Transfer Family 提供您可以參加的研討會，您可以在其中設定啟用 AS2 的 Transfer Family 端點，以及 Transfer Family AS2 連接器。您可以在[此](https://catalog.workshops.aws/transfer-family-as2/en-US)檢視此研討會的詳細資訊。

如需在 Transfer Family 中設定 AS2 step-by-step說明，請參閱以下內容：

1. [匯入 AS2 憑證](managing-as2-partners.md#configure-as2-certificate)

1. [建立 AS2 設定檔](configure-as2-profile.md)

1. [建立 AS2 伺服器](create-as2-transfer-server.md)

1. [建立 AS2 協議](create-as2-transfer-server.md#as2-agreements)

1. [設定 AS2 連接器](configure-as2-connector.md)

如需完整範例，請參閱 [設定 AS2 組態](as2-example-tutorial.md)。

**注意**  
若要顯示 AS2 Terraform 範本的支援，請將拇指向上反應 (👍) 新增至 [Transfer Family Terraform 範本功能請求](https://github.com/aws-ia/terraform-aws-transfer-family/issues/62#issue-3364703944)。您也可以新增說明使用案例的註解。

## AS2 使用案例
<a name="as2-use-cases"></a>

如果您是想要與AS2-enabled之伺服器的合作夥伴交換檔案 AWS Transfer Family 的客戶，則設定中最複雜的部分包括產生一個公有/私有金鑰對進行加密，以及另一個用於簽署，以及與合作夥伴交換公有金鑰。

![\[顯示使用公有/私有金鑰對進行加密和簽署的圖表。\]](http://docs.aws.amazon.com/zh_tw/transfer/latest/userguide/images/as2-architecture-high-level.png)


考慮將 AWS Transfer Family 與 AS2 搭配使用的下列變化。

**注意**  
*交易合作夥伴*是與該合作夥伴設定檔相關聯的合作夥伴。  
下表中所有提及的 *MDN* 都會假設*已簽署*MDNs。


**AS2 使用案例**  

|  | 
| --- |
|  僅限傳入使用案例 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/transfer/latest/userguide/as2-for-transfer-family.html)  | 
|  僅限傳出使用案例 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/transfer/latest/userguide/as2-for-transfer-family.html)  | 
|  傳入和傳出使用案例 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/transfer/latest/userguide/as2-for-transfer-family.html)  | 

## AS2 CloudFormation 範本
<a name="as2-templates-section"></a>

本主題提供有關 AWS CloudFormation 範本的資訊，您可以用來快速部署 AS2 伺服器和組態 AWS Transfer Family。這些範本可自動化設定程序，並協助您實作 AS2 檔案傳輸的最佳實務。
+ 基本 AS2 範本說明於 [使用 範本建立示範 Transfer 系列 AS2 堆疊](create-as2-transfer-server.md#as2-cfn-demo-template)
+ 中說明自訂 HTTP 標頭的 AS2 範本[自訂 AS2 訊息的 HTTP 標頭](as2-custom-http-headers.md)。

### 自訂 AS2 範本
<a name="as2-template-customization"></a>

您可以自訂提供的範本，以符合您的特定需求：

1. 從 S3 URL 下載範本。

1. 修改 YAML 程式碼以調整組態，例如：
   + 安全性設定和憑證組態
   + 網路架構和 VPC 設定
   + 儲存選項和檔案處理
   + 監控和通知偏好設定

1. 將修改後的範本上傳至您自己的 S3 儲存貯體。

1. 使用 CloudFormation 主控台或 部署自訂範本 AWS CLI。

**重要**  
自訂範本時，請確定您維護資源之間的相依性，並遵循安全最佳實務。

### 測試您的 AS2 部署
<a name="as2-template-testing"></a>

使用範本部署 AS2 伺服器之後，您可以測試組態：

1. 檢查 CloudFormation 堆疊輸出的範例命令和端點資訊。

1. 使用 AWS CLI 傳送測試檔案：

   ```
   aws s3api put-object --bucket your-bucket-name --key test.txt --body test.txt
   aws transfer start-file-transfer --connector-id your-connector-id --send-file-paths /your-bucket-name/test.txt
   ```

1. 在目的地 S3 儲存貯體中驗證檔案交付。

1. 檢查 CloudWatch 日誌是否有成功的處理和 MDN 回應。

如需更全面的測試，請考慮使用第三方 AS2 用戶端將檔案傳送到 Transfer Family AS2 伺服器。

### AS2 範本部署的最佳實務
<a name="as2-template-best-practices"></a>

使用 AS2 CloudFormation 範本時，請遵循下列最佳實務：

安全  
使用強式憑證並定期輪換。  
實作最低權限的 IAM 政策。  
使用安全群組限制網路存取。

可靠性  
跨多個可用區域部署。  
針對失敗的傳輸實作監控和提醒。  
設定失敗傳輸的自動重試。

效能  
為您的傳輸磁碟區選擇適當的執行個體類型。  
實作 S3 生命週期政策以實現高效的檔案管理。  
監控和最佳化網路組態。

成本最佳化  
針對可變工作負載使用自動擴展。  
實作較舊檔案的 S3 儲存類別。  
根據實際用量監控和調整資源。

# 設定 AS2
<a name="create-b2b-server"></a>

若要建立AS2-enabled的伺服器，您還必須指定下列元件：
+ **協議** – 雙邊貿易合作夥伴*協議*或合作夥伴關係，定義交換訊息 （檔案） 的雙方之間的關係。為了定義協議，Transfer Family 結合了伺服器、本機設定檔、合作夥伴設定檔和憑證資訊。Transfer Family AS2-inbound程序使用協議。
+ **憑證** – *公有金鑰 (X.509) 憑證*用於 AS2 通訊，以進行訊息加密和驗證。憑證也用於連接器端點。
+ **本機設定檔和合作夥伴設定檔** – *本機設定檔*定義本機 （啟用 AS2 的 Transfer Family 伺服器） 組織或「派對」。同樣地，*合作夥伴設定檔*會定義 Transfer Family 外部的遠端合作夥伴組織。

雖然並非所有AS2-enabled的伺服器都需要，但對於傳出傳輸，您需要**連接器**。連接器會擷取傳出連線的參數。將檔案傳送到客戶的外部非 AWS 伺服器時，需要連接器。

下圖顯示傳入和傳出程序中涉及的 AS2 物件之間的關係。

![\[圖表顯示傳入和傳出程序中涉及的 AS2 物件之間的關係。\]](http://docs.aws.amazon.com/zh_tw/transfer/latest/userguide/images/as2-architecture-in-out-agree-connect.png)


如需end-to-end範例 AS2 組態，請參閱 [設定 AS2 組態](as2-example-tutorial.md)。

**Topics**
+ [AS2 組態](#as2-supported-configurations)
+ [AS2 配額和限制](#as2-limitations)
+ [AS2 功能](#as2-capabilities)

## AS2 組態
<a name="as2-supported-configurations"></a>

本主題說明使用適用性聲明 2 (AS2) 通訊協定之傳輸支援的組態、功能和功能，包括接受的密碼和摘要。

**簽署、加密、壓縮、MDN**

對於傳入和傳出傳輸，下列項目為必要或選用項目：
+ **加密** – 必要 （用於 HTTP 傳輸，這是目前唯一支援的傳輸方法）。只有在 TLS 終止代理轉送，例如 Application Load Balancer (ALB) 且 `X-Forwarded-Proto: https`標頭存在時，才會接受未加密的訊息。
+ **簽署** – 選用
+ **壓縮** – 選用 （目前唯一支援的壓縮演算法是 ZLIB)
+ **訊息處置通知 (MDN)** – 選用

**密碼**

傳入和傳出傳輸都支援下列密碼：
+ AES128\$1CBC
+ AES192\$1CBC
+ AES256\$1CBC
+ 3DES （僅適用於回溯相容性）

**摘要**

支援下列摘要：
+ **傳入簽署和 MDN** – SHA1, SHA256, SHA384, SHA512
+ **傳出簽署和 MDN** – SHA1, SHA256, SHA384, SHA512

**MDN**

對於 MDN 回應，支援特定類型，如下所示：
+ **傳入傳輸** – 同步和非同步
+ **傳出傳輸** – 僅限同步
+ **簡易郵件傳輸通訊協定 (SMTP) （電子郵件 MDN)** – 不支援

**傳輸**
+ **傳入傳輸** – HTTP 是目前唯一支援的傳輸，您必須明確指定。
**注意**  
如果您需要使用 HTTPS 進行傳入傳輸，您可以在 Application Load Balancer 或 Network Load Balancer 上終止 TLS。如[透過 HTTPS 接收 AS2 訊息](send-as2-messages.md#receive-https)中所述。
+ **傳出傳輸** – 如果您提供 HTTP URL，您還必須指定加密演算法。如果您提供 HTTPS URL，您可以選擇為加密演算法指定 **NONE**。

## AS2 配額和限制
<a name="as2-limitations"></a>

本節討論 AS2 的配額和限制

**Topics**
+ [AS2 配額](#as2-quotas)
+ [處理秘密的配額](#as2-quotas-secrets)
+ [已知限制](#as2-known-limitations)

### AS2 配額
<a name="as2-quotas"></a>

AS2 檔案傳輸具有下列配額。若要請求增加可調整的配額，請參閱 中的[AWS 服務 配額](https://docs.aws.amazon.com/general/latest/gr/aws_service_limits.html)*AWS 一般參考*。


**AS2 配額**  

| 名稱 | 預設 | 可調整 | 
| --- | --- | --- | 
| 每個傳出請求的檔案數量上限 | 10 | 否 | 
| 每秒傳出請求的數量上限 | 100 | 否 | 
| 每秒傳入請求的數量上限 | 100 | 否 | 
| 每個帳戶的最大傳出頻寬 （傳出 SFTP 和 AS2 請求都有助於此值） | 每秒 50 MB | 否 | 

### 處理秘密的配額
<a name="as2-quotas-secrets"></a>

AWS Transfer Family AWS Secrets Manager 代表使用基本身分驗證的 AS2 客戶呼叫 。此外，Secrets Manager 會呼叫 AWS KMS。

**注意**  
這些配額並非專屬於您使用 Transfer Family 的秘密：它們會與您 中的所有服務共用 AWS 帳戶。

對於 Secrets Manager `GetSecretValue`，套用的配額是 ** DescribeSecret 和 GetSecretValue API 請求的合併速率**，如[AWS Secrets Manager 配額](https://docs.aws.amazon.com/secretsmanager/latest/userguide/reference_limits.html#quotas)中所述。


**Secrets Manager `GetSecretValue`**  

| 名稱 | 值 | Description | 
| --- | --- | --- | 
| DescribeSecret 和 GetSecretValue API 請求的合併速率 | 每個支援的區域：每秒 1 萬個 | 合併 DescribeSecret和 GetSecretValue API 操作的每秒交易數上限。 | 

對於 AWS KMS，下列配額適用於 `Decrypt`。如需詳細資訊，請參閱[每個 AWS KMS API 操作的請求配額](https://docs.aws.amazon.com/kms/latest/developerguide/requests-per-second.html#rps-table)


**AWS KMS `Decrypt`**  

| 配額名稱 | 預設值 (每秒請求數) | 
| --- | --- | 
|  密碼編譯操作 （對稱） 請求率  |  這些共用配額會隨 AWS 區域 和請求中使用的 AWS KMS 金鑰類型而有所不同。每個配額會分別計算。 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/transfer/latest/userguide/create-b2b-server.html)  | 
|  自訂金鑰存放區請求配額  此配額僅適用於您使用外部金鑰存放區的情況。   |  自訂金鑰存放區請求配額會針對每個自訂金鑰存放區分別計算。 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/transfer/latest/userguide/create-b2b-server.html)  | 

### 已知限制
<a name="as2-known-limitations"></a>
+ 不支援伺服器端 TCP 保持連線。除非用戶端傳送持續連線封包，否則連線會在閒置 350 秒後逾時。
+ 若要讓服務接受並出現在 Amazon CloudWatch logs中的作用中協議，訊息必須包含有效的 AS2 標頭。
+ 從 AWS Transfer Family for AS2 接收訊息的伺服器必須支援密碼編譯訊息語法 (CMS) 演算法保護屬性，以驗證訊息簽章，如 [RFC 6211 ](https://datatracker.ietf.org/doc/html/rfc6211)中所定義。某些舊版 IBM Sterling 產品不支援此屬性。
+ 重複的訊息 IDs會產生已處理/警告：重複的文件訊息。
+ AS2 憑證的金鑰長度必須至少為 2048 位元，最多為 4096 位元。
+ 將 AS2 訊息或非同步 MDNs 傳送至交易合作夥伴的 HTTPS 端點時，訊息或 MDNs 必須使用由公開信任憑證授權單位 (CA) 簽署的有效 SSL 憑證。自我簽署憑證目前僅支援傳出傳輸。
+ 端點必須支援 TLS 1.2 版通訊協定和安全政策允許的密碼編譯演算法 （如 中所述[AWS Transfer Family 伺服器的安全政策](security-policies.md))。
+ 目前不支援來自 AS2 1.2 版的多個附件和憑證交換訊息 (CEM)。
+ 目前僅支援傳出訊息的基本身分驗證。
+ 您可以將檔案處理工作流程連接至使用 AS2 通訊協定的 Transfer Family 伺服器：不過，AS2 訊息不會執行連接到伺服器的工作流程。

## AS2 功能
<a name="as2-capabilities"></a>

下表列出使用 AS2 的 Transfer Family 資源可用的功能。

### AS2 功能
<a name="as2-features"></a>

Transfer Family 提供 AS2 的下列功能。


| Feature | Supported by AWS Transfer Family | 
| --- |--- |
|  [Drummond 認證](https://aws.amazon.com/about-aws/whats-new/2023/06/aws-transfer-family-drummond-group-as2-certification/) | Yes | 
| [AWS CloudFormation 支援](https://docs.aws.amazon.com/transfer/latest/userguide/as2-cfn-demo-template.html)  | Yes | 
| [Amazon CloudWatch 指標](https://docs.aws.amazon.com/transfer/latest/userguide/as2-monitoring.html) | Yes | 
| [SHA-2 密碼編譯演算法](https://docs.aws.amazon.com/transfer/latest/userguide/security-policies.html#cryptographic-algorithms) | Yes | 
| Support for Amazon S3 | Yes | 
| Support for Amazon EFS | No | 
| Scheduled Messages | Yes 1 | 
| AWS Transfer Family Managed Workflows | No | 
| Certificate Exchange Messaging (CEM) | No | 
| Mutual TLS (mTLS) | No | 
| Support for self-signed certificates | Yes | 

1. [使用 Amazon EventBridge 排程 AWS Lambda 函數](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-run-lambda-schedule.html)可用的傳出排程訊息

### AS2 傳送和接收功能
<a name="as2-capabilities"></a>

下表提供 AWS Transfer Family AS2 傳送和接收功能的清單。


| Capability | Inbound: Receiving with server | Outbound: Sending with connector | 
| --- |--- |--- |
| [TLS 加密傳輸 (HTTPS)](send-as2-messages.md#as2-https-process) | 是 1 | Yes | 
| Non-TLS Transport (HTTP) | Yes |  是 2  | 
| Synchronous MDN | Yes | Yes | 
| Message Compression | Yes | Yes | 
| Asynchronous MDN | Yes | No | 
| Static IP Address | Yes | Yes | 
| Bring Your Own IP Address | Yes | No | 
| Multiple File Attachments | No | No | 
| Basic Authentication | No | Yes | 
| AS2 Restart | Not applicable | No | 
| AS2 Reliability | No | No | 
| Custom Subject per Message | Not applicable | No | 

1. Network Load Balancer (NLB) 或 Application Load Balancer (ALB) 提供傳入 TLS 加密傳輸

2. 只有在啟用加密時才能使用傳出非 TLS Transport

# 管理 AS2 憑證
<a name="managing-as2-partners"></a>

本主題討論如何匯入和管理 AS2 憑證。匯入憑證是 Transfer Family 的 AS2 程序的第一步。

1. 匯入憑證

1. [建立 AS2 設定檔](configure-as2-profile.md)

1. [建立 AS2 伺服器](create-as2-transfer-server.md) 

1. [建立 AS2 協議](create-as2-transfer-server.md#as2-agreements)

1. [設定 AS2 連接器](configure-as2-connector.md)

## 匯入 AS2 憑證
<a name="configure-as2-certificate"></a>

Transfer Family AS2 程序使用憑證金鑰來加密和簽署傳輸的資訊。合作夥伴可以針對這兩個目的使用相同的金鑰，或針對每個目的使用個別的金鑰。如果您有由可信任的第三方保存在託管中的常見加密金鑰，以便在發生災難或安全漏洞時解密資料，我們建議您使用單獨的簽署金鑰。透過使用單獨的簽署金鑰 （您不託管的金鑰），您不會損害數位簽章的不可否認功能。

**注意**  
AS2 憑證的金鑰長度必須至少為 2048 位元，最多為 4096 位元。

下列幾點詳細說明如何在程序期間使用 AS2 憑證。
+ 傳入 AS2
  + 交易合作夥伴會傳送簽署憑證的公有金鑰，而此金鑰會匯入合作夥伴設定檔。
  + 本機方會傳送其加密和簽署憑證的公有金鑰。然後，合作夥伴會匯入私有金鑰或金鑰。本機方可以傳送單獨的憑證金鑰以進行簽署和加密，也可以選擇將相同的金鑰用於這兩個目的。
+ 傳出 AS2
  + 合作夥伴會傳送其加密憑證的公有金鑰，而此金鑰會匯入合作夥伴設定檔。
  + 本機方會傳送憑證的公有金鑰以進行簽署，並匯入憑證的私有金鑰以進行簽署。
  + 如果您使用的是 HTTPS，則可以匯入自我簽署的 Transport Layer Security (TLS) 憑證。

如需如何建立憑證的詳細資訊，請參閱 [步驟 1：建立 AS2 的憑證](as2-example-tutorial.md#as2-create-certs)。

此程序說明如何使用 Transfer Family 主控台匯入憑證。如果您想要 AWS CLI 改用 ，請參閱 [步驟 2：將憑證匯入為 Transfer Family 憑證資源](as2-example-tutorial.md#as2-import-certs-example)。

**指定AS2-enabled憑證**

1. 在 https：//[https://console.aws.amazon.com/transfer/](https://console.aws.amazon.com/transfer/) 開啟 AWS Transfer Family 主控台。

1. 在左側導覽窗格的 **AS2 交易合作夥伴**下，選擇**憑證**。

1. 選擇 **Import certificate (匯入憑證)**。

1. 在**憑證組態**區段中，針對**憑證描述**，輸入憑證易於識別的名稱。請確定您可以透過憑證的描述來識別憑證的用途。此外，選擇憑證的角色。

1. 在**憑證使用**量區段中，選擇此憑證的用途。它可用於加密、簽署或兩者。

   **秘訣：**如果您為用量選擇**加密和簽署**，Transfer Family 會建立兩個相同的憑證 （每個憑證都有自己的 ID)：一個使用值為 `ENCRYPTION`，另一個使用值為 `SIGNING`。

1. 在**憑證內容**區段中，提供來自交易合作夥伴的公有憑證，或本機憑證的公有和私有金鑰。

   在**憑證內容**區段中填入適當的詳細資訊。
   + 如果您選擇**自我簽署憑證**，則不會提供憑證鏈。
   + 將憑證文字及其鏈貼到**憑證和憑證鏈**欄位中。
   + 如果此憑證是本機憑證，請貼上其私有金鑰。

1. 選擇**匯入憑證**以完成程序，並儲存匯入憑證的詳細資訊。

**注意**  
TLS 憑證只能匯入為合作夥伴的公有憑證。如果您**從合作夥伴選取公有憑證**，然後選取使用量的 **Transport Layer Security (TLS)**，您會收到警告。此外，TLS 憑證必須是自我簽署 （也就是說，您必須選取**自我簽署憑證**才能匯入 TLS 憑證）。

## AS2 憑證輪換
<a name="as2-certificate-rotation"></a>

通常，憑證的有效期為六個月到一年。您可能已設定要長時間保留的設定檔。為了方便此操作，Transfer Family 提供憑證輪換。您可以為設定檔指定多個憑證，讓您繼續使用設定檔多年。Transfer Family 使用憑證簽署 （選用） 和加密 （強制性）。如果您願意，可以為這兩個目的指定單一憑證。

憑證輪換是將舊過期憑證取代為較新憑證的程序。如果協議中的合作夥伴尚未為傳出傳輸設定新憑證，或可能在也可能使用較新憑證的期間傳送使用舊憑證簽署或加密的承載，則轉換是一項漸進式轉換，以避免中斷傳輸。新舊憑證都有效的中繼期間稱為*寬限期*。

X.509 憑證具有 `Not Before`和 `Not After` 日期。不過，這些參數可能無法為管理員提供足夠的控制。Transfer Family 提供 `Active Date`和 `Inactive Date`設定，以控制哪些憑證用於傳出承載，以及哪些憑證接受傳入承載。

### 憑證過期監控
<a name="as2-certificate-expiry-monitoring"></a>

Transfer Family 會在匯入憑證`DaysUntilExpiry`後發佈 Amazon CloudWatch 指標。指標會發出目前日期與憑證`InactiveDate`上指定為 的日期之間的天數。指標位於 CloudWatch 指標儀表板的`Transfer` AWS 命名空間下。

此指標一律具有 **CertificateId** 的指標維度，如果客戶在憑證上提供**描述**維度，則選擇性包含描述維度。如需 CloudWatch 指標維度的詳細資訊，請參閱 *CloudWatch API 參考*中的[維](https://docs.aws.amazon.com/AmazonCloudWatch/latest/APIReference/API_Dimension.html)度。

**注意**  
在匯入 Transfer Family 的憑證之後，最多可能需要一整天的時間，才能將此指標傳送到客戶帳戶。

您可以使用此指標來建立 CloudWatch 警示，以便在憑證即將過期時通知您。

傳出憑證選擇會使用傳輸日期之前的值上限做為 `Inactive Date`。傳入程序接受 `Not Before`和 範圍內的憑證`Not After`，以及 `Active Date`和 範圍內的憑證`Inactive Date`。

### 憑證輪換範例
<a name="as2-cert-rotate-example"></a>

下表說明為單一設定檔設定兩個憑證的一種可能方式。


**兩個輪換中的憑證**  

| 名稱 | NOT BEFORE （由憑證授權單位控制） | ACTIVE DATE （由 Transfer Family 設定） | INACTIVE DATE （由 Transfer Family 設定） | NOT AFTER （由憑證授權單位設定） | 
| --- | --- | --- | --- | --- | 
| Cert1 （較舊的憑證） | 2019-11-01 | 2020-01-01 | 2020-12-31 | 2024-01-01 | 
| Cert2 （較新的憑證） | 2020-11-01 | 2020-06-01 | 2021-06-01 | 2025-01-01 | 

 注意下列事項：
+ 當您`Inactive Date`為憑證指定 `Active Date`和 時，範圍必須在 `Not Before`和 之間的範圍內`Not After`。
+ 我們建議您為每個設定檔設定多個憑證，確保所有憑證的作用中日期範圍都涵蓋您想要使用該設定檔的時間長度。
+ 建議您在較舊的憑證變為非作用中和較新的憑證變為作用中之間指定一些寬限期。在上述範例中，第一個憑證在 2020-12-31 之前不會變成非作用中，而第二個憑證在 2020-06-01 變為作用中，提供 6 個月的寬限期。在 2020-06-01 到 2020-12-31 期間，這兩個憑證都是作用中的。

# 建立 AS2 設定檔
<a name="configure-as2-profile"></a>

本主題討論如何建立設定檔以用於 AS2 程序。*本機設定檔*會定義本機 （啟用 AS2 的 Transfer Family 伺服器） 組織或 "party"。同樣地，*合作夥伴設定檔*會定義 Transfer Family 外部的遠端合作夥伴組織。

1. [匯入 AS2 憑證](managing-as2-partners.md#configure-as2-certificate)

1. 建立 AS2 設定檔

1. [建立 AS2 伺服器](create-as2-transfer-server.md) 

1. [建立 AS2 協議](create-as2-transfer-server.md#as2-agreements)

1. [設定 AS2 連接器](configure-as2-connector.md)

使用此程序來建立本機和合作夥伴設定檔。此程序說明如何使用 Transfer Family 主控台建立 AS2 設定檔。如果您想要改用 AWS CLI ，請參閱 [步驟 3：為您和您的交易合作夥伴建立設定檔](as2-example-tutorial.md#as2-create-profiles-example)。

**建立 AS2 設定檔**

1. 在 https：//[https://console.aws.amazon.com/transfer/](https://console.aws.amazon.com/transfer/) 開啟 AWS Transfer Family 主控台。

1. 在左側導覽窗格的 **AS2 交易合作夥伴**下，選擇**設定檔**，然後選擇**建立設定檔**。

1. 在**設定檔組態**區段中，輸入設定檔的 AS2 ID。此值用於 AS2 通訊協定特定的 HTTP 標頭`as2-from``as2-to`，並識別交易合作夥伴關係，這會決定要使用的憑證等。

1. 在**設定檔類型**區段中，選擇**本機設定檔**或**合作夥伴設定檔**。

1. 在**憑證**區段中，從下拉式選單中選擇一或多個憑證。

   **秘訣：**如果您想要匯入未列在下拉式功能表中的憑證，請選取**匯入新的憑證**。這會在**匯入憑證**畫面中開啟新的瀏覽器視窗。如需匯入憑證的程序，請參閱 [匯入 AS2 憑證](managing-as2-partners.md#configure-as2-certificate)。

1. （選用） 在**標籤**區段中，指定一或多個鍵/值對，以協助識別此設定檔。

1. 選擇**建立設定檔**以完成程序並儲存新的設定檔。

# 建立 AS2 伺服器
<a name="create-as2-transfer-server"></a>

本主題提供使用主控台或 CloudFormation 範本建立AS2-enabled Transfer Family 伺服器的指示。如需end-to-end範例 AS2 組態，請參閱 [設定 AS2 組態](as2-example-tutorial.md)。建立 AS2 伺服器之後，您可以將協議新增至伺服器。

1. [匯入 AS2 憑證](managing-as2-partners.md#configure-as2-certificate)

1. [建立 AS2 設定檔](configure-as2-profile.md)

1. 建立 AS2 伺服器

1. [建立 AS2 協議](#as2-agreements)

1. [設定 AS2 連接器](configure-as2-connector.md)

**Topics**
+ [使用 Transfer Family 主控台建立 AS2 伺服器](#create-server-as2-console)
+ [使用 範本建立示範 Transfer 系列 AS2 堆疊](#as2-cfn-demo-template)
+ [建立 AS2 協議](#as2-agreements)

## 使用 Transfer Family 主控台建立 AS2 伺服器
<a name="create-server-as2-console"></a>

此程序說明如何使用 Transfer Family 主控台建立AS2-enabled的伺服器。如果您想要 AWS CLI 改用 ，請參閱 [步驟 4：建立使用 AS2 通訊協定的 Transfer Family 伺服器](as2-example-tutorial.md#as2-example-server)。

**注意**  
您可以將檔案處理工作流程連接至使用 AS2 通訊協定的 Transfer Family 伺服器：不過，AS2 訊息不會執行連接到伺服器的工作流程。

**建立AS2-enabled的伺服器**

1. 在 https：//[https://console.aws.amazon.com/transfer/](https://console.aws.amazon.com/transfer/) 開啟 AWS Transfer Family 主控台。

1. 在左側導覽窗格中，選擇**伺服器**，然後選擇**建立伺服器**。

1. 在**選擇通訊協定**頁面上，選取 **AS2 （適用性陳述式 2)**，然後選擇**下一步**。

1. 在**選擇身分提供者**頁面上，選擇**下一步**。
**注意**  
對於 AS2，您無法選擇身分提供者，因為 AS2 通訊協定不支援基本身分驗證。反之，您可以透過虛擬私有雲端 (VPC) 安全群組控制存取。

1. 在**選擇端點**頁面上，執行下列動作：  
![\[主控台螢幕擷取畫面，顯示選擇託管 VPC 的端點頁面。\]](http://docs.aws.amazon.com/zh_tw/transfer/latest/userguide/images/create-server-choose-endpoint-vpc-internal.png)

   1. 針對**端點類型**，選擇**託管的 VPC** 來託管伺服器的端點。如需設定 VPC 託管端點的詳細資訊，請參閱 [在虛擬私有雲端中建立伺服器](create-server-in-vpc.md)。
**注意**  
AS2 通訊協定不支援公開存取的端點。若要讓 VPC 端點可透過網際網路存取，請在**存取**下選擇**網際網路面向**，然後提供您的彈性 IP 地址。

   1. 針對**存取**，選擇下列其中一個選項：
      + **內部** – 選擇此選項可在 VPC 和 VPC 連線環境中提供存取權，例如透過 Direct Connect 或 VPN 的現場部署資料中心。
      + **面向網際網路** – 選擇此選項以透過網際網路以及從您的 VPC 和 VPC 連線環境提供存取，例如透過 Direct Connect 或 VPN 的現場部署資料中心。

        如果您選擇**面向網際網路**，請在出現提示時提供彈性 IP 地址。

   1. 對於 **VPC**，請選擇現有的 VPC 或選擇**建立 VPC** 以建立新的 VPC。

   1. 對於**啟用 FIPS**，保持 **FIPS 啟用端點**核取方塊清除。
**注意**  
AS2 通訊協定不支援啟用 FIPS 的端點。

   1. 選擇**下一步**。

1. 在**選擇網域**頁面上，選擇 **Amazon S3**，使用選取的通訊協定將檔案儲存並存取為物件。

   選擇**下一步**。

1. 在**設定其他詳細資訊**頁面上，選擇您需要的設定。
**注意**  
如果您要將任何其他通訊協定與 AS2 一起設定，則會套用所有其他詳細資訊設定。不過，對於 AS2 通訊協定，唯一適用的設定是 **CloudWatch 記錄**和**標籤**區段中的設定。  
即使設定 CloudWatch 記錄角色是選用的，我們強烈建議進行設定，以便您可以查看訊息狀態並疑難排解組態問題。

1. 在**檢閱和建立**頁面上，檢閱您的選擇，以確保它們正確無誤。
   + 如果您想要編輯任何設定，請選擇您要變更之步驟旁的**編輯**。
**注意**  
如果您編輯步驟，我們建議您在選擇編輯的步驟之後檢閱每個步驟。
   + 如果您沒有變更，請選擇**建立伺服器**以建立伺服器。您會前往顯示下列內容的 **Servers (伺服器)** 頁面，這裡會列出您的新伺服器。

     可能需要幾分鐘的時間，新伺服器的狀態才會變更為**線上**。此時，您的伺服器會執行您使用者的檔案操作。

## 使用 範本建立示範 Transfer 系列 AS2 堆疊
<a name="as2-cfn-demo-template"></a>

我們提供獨立的 CloudFormation 範本，以快速建立AS2-enabled Transfer Family 伺服器。範本會使用公有 Amazon VPC 端點、憑證、本機和合作夥伴設定檔、協議和連接器來設定伺服器。

基本 AS2 伺服器範本會建立下列資源：
+ 具有 VPC 端點AS2-enabled 的 Transfer Family 伺服器
+ 具有憑證的本機和合作夥伴 AS2 設定檔
+ 設定檔之間的協議
+ 用於檔案儲存的 Amazon S3 儲存貯體
+ 必要的 IAM 角色和政策
+ CloudWatch 記錄組態

 使用此範本之前，請注意下列事項：
+ 如果您從此範本建立堆疊，則會針對 AWS 使用的資源向您收費。
+ 範本會建立多個憑證，並將其放入 AWS Secrets Manager 以安全地存放。您可以視需要從 Secrets Manager 刪除這些憑證，因為您需要支付使用此服務的費用。在 Secrets Manager 中刪除這些憑證並不會從 Transfer Family 伺服器刪除它們。因此，示範堆疊的功能不受影響。不過，對於您要與生產 AS2 伺服器搭配使用的憑證，建議您使用 Secrets Manager 來管理和定期輪換儲存的憑證。
+ 我們建議您僅使用範本做為基礎，主要用於示範用途。如果您想要在生產環境中使用此示範堆疊，建議您修改範本的 YAML 程式碼，以建立更強大的堆疊。例如，建立生產層級憑證，並建立可在生產中使用的 AWS Lambda 函數。

**從 CloudFormation 範本建立AS2-enabled的 Transfer Family 伺服器**

1. 在 https：//[https://console.aws.amazon.com/cloudformation](https://console.aws.amazon.com/cloudformation/) 開啟 CloudFormation 主控台。

1. 在左側導覽窗格中，選擇 **Stacks (堆疊)**。

1. 選擇 **Create stack (建立堆疊)**，然後選擇 **With new resources (standard) (使用新資源 (標準))。**

1. 在**先決條件 - 準備範本**區段中，選擇**選擇現有範本**。

1. 複製此連結 [AS2 示範範本](https://s3.amazonaws.com/aws-transfer-resources/as2-templates/aws-transfer-as2-basic.template.yml)，並將其貼到 **Amazon S3 URL** 欄位中。

1. 選擇**下一步**。

1. 在**指定堆疊詳細資訊**頁面上，為您的堆疊命名，然後指定下列參數：
   + 在 **AS2** 下，輸入 **Local AS2 ID** 和 **Partner AS2 ID** 的值，或`partner`分別接受預設值 `local`和 。
   + 在**網路**下，輸入**安全群組傳入 CIDR IP **的值，或接受預設值 `0.0.0.0/0`。
**注意**  
此值採用 CIDR 格式，指定哪些 IP 地址允許傳入到 AS2 伺服器。預設值 會`0.0.0.0/0`允許所有 IP 地址。
   + 在**一般**下，輸入**字首**的值，或接受預設值 `transfer-as2`。此字首會放置在堆疊建立的任何資源名稱之前。例如，如果您使用預設字首，Amazon S3 儲存貯體會命名為 `transfer-as2-amzn-s3-demo-bucket`。

1. 選擇**下一步**。在**設定堆疊選項**頁面上，再次選擇**下一步**。

1. 檢閱您要建立之堆疊的詳細資訊，然後選擇**建立堆疊**。
**注意**  
在頁面底部**的功能**下，您必須確認 CloudFormation 可能會建立 AWS Identity and Access Management (IAM) 資源。

建立堆疊之後，您可以使用 AWS Command Line Interface ()，將測試 AS2 訊息從合作夥伴伺服器傳送至本機 Transfer Family 伺服器AWS CLI。用於傳送測試訊息的範例 AWS CLI 命令會與堆疊中的所有其他資源一起建立。

若要使用此範例命令，請前往堆疊的**輸出**索引標籤，然後複製 **TransferExampleAs2Command**。然後，您可以使用 執行 命令 AWS CLI。如果您尚未安裝 AWS CLI，請參閱*AWS Command Line Interface 《 使用者指南*》中的[安裝或更新最新版本的 AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html)。

範例命令具有下列格式：

```
aws s3api put-object --bucket amzn-s3-demo-bucket --key test.txt && aws transfer start-file-transfer --region aws-region --connector-id TransferConnectorId --send-file-paths /amzn-s3-demo-bucket/test.txt
```

**注意**  
此命令的版本包含堆疊中 `amzn-s3-demo-bucket`和 `TransferConnectorId` 資源的實際值。

此範例命令包含兩個使用 `&&`字串鏈結在一起的個別命令。

第一個命令會在您的儲存貯體中建立新的空白文字檔案：

```
aws s3api put-object --bucket amzn-s3-demo-bucket --key test.txt
```

然後，第二個命令會使用 連接器，將檔案從合作夥伴設定檔傳送至本機設定檔。Transfer Family 伺服器已設定協議，允許本機設定檔接受來自合作夥伴設定檔的訊息。

```
aws transfer start-file-transfer --region aws-region --connector-id TransferConnectorId --send-file-paths /amzn-s3-demo-bucket/test.txt
```

執行 命令後，您可以前往 Amazon S3 儲存貯體 (`amzn-s3-demo-bucket`) 並檢視內容。如果命令成功，您應該會在儲存貯體中看到下列物件：
+ `processed/` – 此資料夾包含描述傳輸檔案和 MDN 回應的 JSON 檔案。
+ `processing/` – 此資料夾暫時包含正在處理的檔案，但在傳輸完成後，此資料夾應該是空的。
+ `server-id/` – 此資料夾是根據 Transfer Family 伺服器 ID 命名。它包含 `from-partner`（此資料夾根據合作夥伴的 AS2 ID 動態命名），它本身包含 `failed/`、 `processed/`和 `processing/` 資料夾。`/server-id/from-partner/processed/` 資料夾包含傳輸的文字檔案副本，以及對應的 JSON 和 MDN 檔案。
+ `test.txt` – 此物件是已傳輸的 （空） 檔案。

## 建立 AS2 協議
<a name="as2-agreements"></a>

協議與 Transfer Family 伺服器相關聯。它們為使用 AS2 通訊協定交換訊息或檔案的交易合作夥伴指定詳細資訊，方法是使用 Transfer Family 進行*傳入*傳輸，將 AS2 檔案從外部、合作夥伴擁有的來源傳送至 Transfer Family 伺服器。

此程序說明如何使用 Transfer Family 主控台建立 AS2 協議。如果您想要 AWS CLI 改用 ，請參閱 [步驟 5：建立您與合作夥伴之間的協議](as2-example-tutorial.md#as2-create-agreement-example)。

**建立 Transfer Family 伺服器的協議**

1. 在 https：//[https://console.aws.amazon.com/transfer/](https://console.aws.amazon.com/transfer/) 開啟 AWS Transfer Family 主控台。

1. 在左側導覽窗格中，選擇**伺服器**，然後選擇使用 AS2 通訊協定的伺服器。

   或者，只要您至少有一個使用 AS2 通訊協定的 Transfer Family 伺服器，請選取**協議以從 AS2 交易合作夥伴選單接收訊息**。 **AS2 ** 然後，在**建立協議**畫面中，選取要與本合約建立關聯的 AS2 伺服器。

1. 在伺服器詳細資訊頁面上，向下捲動至**協議**區段。

1. 選擇**新增協議**。

1. 填寫協議參數，如下所示：

   1. 在**協議組態**區段中，輸入描述性名稱。請確定您可以根據協議的名稱來識別協議的目的。此外，設定協議**的狀態**：**作用中** （預設為選取） **或非作用中**。

   1. 在**通訊組態**區段中，選擇本機設定檔和合作夥伴設定檔。此外，選擇是否強制執行訊息簽署。
      + 根據預設，啟用**強制執行訊息簽署**，這表示 Transfer Family 拒絕來自您交易合作夥伴的未簽署訊息。
      + 清除此設定，以允許 Transfer Family 接受來自您交易合作夥伴的未簽署訊息。

   1. 在**收件匣目錄組態**區段中，提供下列資訊。
      + 決定是否選取**指定個別目錄來存放 AS2 訊息、MDN 檔案和 JSON 狀態檔案**。
        + 如果選取此選項，您可以為承載檔案、失敗的檔案、MDN 檔案、狀態檔案和暫存檔案指定不同的位置。
        + 如果您清除此選項，所有 AS2 檔案都會進入您為基礎目錄指定的位置。
      + 針對 **S3 儲存貯體**，選擇 Amazon S3 儲存貯體。
      + 對於**字首**，您可以輸入要用於在儲存貯體中存放檔案的字首 （資料夾）。

        例如，如果您**amzn-s3-demo-bucket**為儲存貯體輸入 ，**incoming**並為字首輸入 ，則 AS2 檔案會儲存到 `/amzn-s3-demo-bucket/incoming` 資料夾。
      + 針對 **AWS IAM 角色**，選擇可存取您指定之儲存貯體的角色。
      + 針對**保留檔案名稱**，選擇是否要保留傳入 AS2 訊息承載的原始檔案名稱。
        + 如果您選取此設定，交易合作夥伴提供的檔案名稱會在檔案儲存在 Amazon S3 中時保留。
        + 如果您清除此設定，則 Transfer Family 儲存檔案時，會調整檔案名稱，如 中所述[檔案名稱和位置](send-as2-messages.md#file-names-as2)。

   1. （選用） 在標籤區段中新增**標籤**。

   1. 輸入協議的所有資訊後，請選擇**建立協議**。

新協議會出現在伺服器詳細資訊頁面的**協議**區段中。

# 設定 AS2 連接器
<a name="configure-as2-connector"></a>

連接器的目的是在交易合作夥伴之間建立*對外*傳輸的關係，將 AS2 檔案從 Transfer Family 伺服器傳送至外部、合作夥伴擁有的目的地。對於連接器，您可以指定本機方、遠端合作夥伴及其憑證 （透過建立本機和合作夥伴設定檔）。

準備好連接器後，您可以將資訊傳輸給交易合作夥伴。每個 AS2 伺服器都會指派三個靜態 IP 地址。AS2 連接器使用這些 IP 地址透過 AS2 傳送非同步 MDNs 給您的交易合作夥伴。

**注意**  
交易合作夥伴收到的訊息大小與 Amazon S3 中的物件大小不相符。發生此差異是因為 AS2 訊息在傳送之前將檔案包裝在信封中。因此，即使檔案是以壓縮方式傳送，檔案大小也可能會增加。因此，請確定交易合作夥伴的檔案大小上限大於您要傳送的檔案大小。

1. [匯入 AS2 憑證](managing-as2-partners.md#configure-as2-certificate)

1. [建立 AS2 設定檔](configure-as2-profile.md)

1. [建立 AS2 伺服器](create-as2-transfer-server.md)

1. [建立 AS2 協議](create-as2-transfer-server.md#as2-agreements)

1. 建立 AS2 連接器

## 建立 AS2 連接器
<a name="create-as2-connector"></a>

此程序說明如何使用 AWS Transfer Family 主控台建立 AS2 連接器。如果您想要 AWS CLI 改用 ，請參閱 [步驟 6：在您和合作夥伴之間建立連接器](as2-example-tutorial.md#as2-create-connector-example)。

**建立 AS2 連接器**

1. 在 https：//[https://console.aws.amazon.com/transfer/](https://console.aws.amazon.com/transfer/) 開啟 AWS Transfer Family 主控台。

1. 在左側導覽窗格中，從 **AS2 交易合作夥伴**功能表中選擇**要傳送訊息的連接器**，然後選擇**建立 AS2 連接器**。

1. 在**連接器組態**區段中，指定下列資訊：
   + **URL** – 輸入傳出連線的 URL。
   + **存取角色** – 選擇要使用的 (IAM) 角色的 Amazon Resource Name AWS Identity and Access Management (ARN)。請確定此角色提供對`StartFileTransfer`請求中所用檔案位置之父目錄的讀取和寫入存取權。此外，請確定角色提供您要使用 傳送之檔案的父目錄的讀取和寫入存取權`StartFileTransfer`。
**注意**  
如果您為連接器使用基本身分驗證，存取角色需要秘密的 `secretsmanager:GetSecretValue` 許可。如果秘密是使用客戶受管金鑰而非 AWS 受管金鑰 中的 加密 AWS Secrets Manager，則角色也需要該金鑰的 `kms:Decrypt` 許可。如果您以字首 命名秘密`aws/transfer/`，您可以使用萬用字元 (`*`) 新增必要的許可，如[建立秘密的範例許可](https://docs.aws.amazon.com/secretsmanager/latest/userguide/auth-and-access_examples.html#auth-and-access_examples_wildcard)所示。
   + **記錄角色** （選用） – 選擇連接器用來將事件推送至 CloudWatch 日誌的 IAM 角色。

1. 在 **AS2 組態**區段中，選擇本機和合作夥伴設定檔、加密和簽署演算法，以及是否壓縮傳輸的資訊。注意下列事項：
   + **Preserve S3 Content-Type** 參數預設為啟用。

     設定時，Transfer Family 會使用與 S3 中的物件相關聯的 Amazon S3，而不是根據副檔名來映射內容類型。 `Content-Type`如果您希望服務根據副檔名來映射 AS2 訊息的內容類型，而不是使用 S3 物件中的內容類型，請清除此設定。
   + 對於加密演算法，除非您必須支援需要的舊版用戶端，`DES_EDE3_CBC`否則請勿選擇 ，因為它是一種較弱的加密演算法。
   + 在與連接器一起傳送的 AS2 訊息中，**主旨**會用作 `subject` HTTP 標頭屬性。
   + 如果您選擇在沒有加密演算法的情況下建立連接器，則必須指定 `HTTPS`做為您的通訊協定。

1. 在**基本身分驗證**區段中，指定下列資訊。
   + 若要傳送登入憑證與傳出訊息，請選取**啟用基本身分驗證**。如果您不想傳送任何包含傳出訊息的登入資料，請保持清除**啟用基本身分驗證**。
   + 如果您使用身分驗證，請選擇或建立秘密。
     + 若要建立新的秘密，請選擇**建立新的秘密**，然後輸入使用者名稱和密碼。這些登入資料必須符合連線至合作夥伴端點的使用者。  
![\[AWS Transfer Family 主控台中的建立連接器頁面，顯示基本身分驗證區段，其中包含選擇建立新的秘密。\]](http://docs.aws.amazon.com/zh_tw/transfer/latest/userguide/images/as2-basic-auth-create-secret.png)
     + 若要使用現有的秘密，請選擇**選擇現有的秘密**，然後從下拉式功能表中選擇秘密。如需在 Secrets Manager 中建立正確格式秘密的詳細資訊，請參閱 [啟用 AS2 連接器的基本身分驗證](#as2-secret-create)。  
![\[AWS Transfer Family 主控台中的建立連接器頁面，顯示基本身分驗證區段，其中包含選擇所選的現有秘密。\]](http://docs.aws.amazon.com/zh_tw/transfer/latest/userguide/images/as2-basic-auth-select-secret.png)

1. 在 **MDN 組態**區段中，指定下列資訊：
   + **請求 MDN** – 您可以選擇要求交易合作夥伴在成功透過 AS2 接收您的訊息之後，傳送 MDN 給您。
   + **已簽署 MDN** – 您可以選擇要求簽署 MDNs。只有在您已選取**請求 MDN** 時，才能使用此選項。

1. 確認所有設定後，請選擇**建立 AS2 連接器**來建立連接器。

**連接器**頁面隨即出現，並將新連接器的 ID 新增至清單。若要檢視連接器的詳細資訊，請參閱 [檢視 AS2 連接器詳細資訊](#connectors-view-info)。

## AS2 連接器演算法
<a name="as2-connectors-details"></a>

當您建立 AS2 連接器時，下列安全演算法會連接到連接器。


| Type | 演算法 | 
| --- | --- | 
| TLS 密碼 | TLS\$1ECDHE\$1ECDSA\$1WITH\$1AES\$1128\$1GCM\$1SHA256 TLS\$1ECDHE\$1RSA\$1WITH\$1AES\$1128\$1GCM\$1SHA256 TLS\$1ECDHE\$1ECDSA\$1WITH\$1AES\$1128\$1CBC\$1SHA256 TLS\$1ECDHE\$1RSA\$1WITH\$1AES\$1128\$1CBC\$1SHA256 TLS\$1ECDHE\$1ECDSA\$1WITH\$1AES\$1256\$1GCM\$1SHA384 TLS\$1ECDHE\$1RSA\$1WITH\$1AES\$1256\$1GCM\$1SHA384 TLS\$1ECDHE\$1ECDSA\$1WITH\$1AES\$1256\$1CBC\$1SHA384 TLS\$1ECDHE\$1RSA\$1WITH\$1AES\$1256\$1CBC\$1SHA384 | 

## AS2 連接器的基本身分驗證
<a name="as2-basic-auth"></a>

當您建立或更新使用 AS2 通訊協定的 Transfer Family 伺服器時，您可以為傳出訊息新增基本身分驗證。您可以將身分驗證資訊新增至連接器來執行此操作。

**注意**  
只有在您使用 HTTPS 時，才能使用基本身分驗證。

若要對連接器使用身分驗證，請在**基本身分驗證區段中選取啟用****基本身分驗證**。啟用基本身分驗證後，您可以選擇建立新的秘密，或使用現有的秘密。在任何一種情況下，秘密中的登入資料都會與使用此連接器的傳出訊息一起傳送。登入資料必須符合嘗試連線至交易合作夥伴遠端端點的使用者。

下列螢幕擷取畫面顯示已選取**啟用基本身分驗證**，以及**建立所選的新秘密**。做出這些選擇後，您可以輸入秘密的使用者名稱和密碼。

![\[Transfer Family 主控台連接器頁面，顯示連接器的訊息身分驗證資訊。在此情況下，會選取啟用基本身分驗證，並選取建立新秘密。\]](http://docs.aws.amazon.com/zh_tw/transfer/latest/userguide/images/as2-basic-auth-create-secret.png)


下列螢幕擷取畫面顯示已選取**啟用基本身分驗證**，以及**選擇所選的現有秘密**。您的秘密必須採用正確的格式，如中所述[啟用 AS2 連接器的基本身分驗證](#as2-secret-create)。

![\[Transfer Family 主控台連接器頁面，顯示連接器的訊息身分驗證資訊。在此情況下，會選取啟用基本身分驗證，並選擇現有的秘密。\]](http://docs.aws.amazon.com/zh_tw/transfer/latest/userguide/images/as2-basic-auth-select-secret.png)


## 啟用 AS2 連接器的基本身分驗證
<a name="as2-secret-create"></a>

當您為 AS2 連接器啟用基本身分驗證時，您可以在 Transfer Family 主控台中建立新的秘密，也可以使用您在 中建立的秘密 AWS Secrets Manager。在任何一種情況下，您的秘密都會存放在 Secrets Manager 中。

**Topics**
+ [在 主控台中建立新的秘密](#as2-secret-details-console)
+ [使用現有的 密碼](#use-existing-secret)
+ [在 中建立秘密 AWS Secrets Manager](#as2-secret-details-asm)

### 在 主控台中建立新的秘密
<a name="as2-secret-details-console"></a>

當您在主控台中建立連接器時，您可以建立新的秘密。

若要建立新的秘密，請選擇**建立新的秘密**，然後輸入使用者名稱和密碼。這些登入資料必須符合連線至合作夥伴端點的使用者。

![\[AWS Transfer Family 主控台建立連接器頁面，顯示「基本身分驗證」區段，其中已選擇建立新秘密。\]](http://docs.aws.amazon.com/zh_tw/transfer/latest/userguide/images/as2-basic-auth-create-secret.png)


**注意**  
當您在主控台中建立新的秘密時，秘密的名稱遵循此命名慣例：**/aws/transfer/*connector-id***，其中 *connector-id* 是您建立的連接器 ID。當您嘗試在其中尋找秘密時，請考慮這一點 AWS Secrets Manager。

### 使用現有的 密碼
<a name="use-existing-secret"></a>

在主控台中建立連接器時，您可以指定現有的秘密。

若要使用現有的秘密，請選擇**選擇現有的秘密**，然後從下拉式功能表中選擇秘密。如需在 Secrets Manager 中建立正確格式秘密的詳細資訊，請參閱 [在 中建立秘密 AWS Secrets Manager](#as2-secret-details-asm)。

![\[AWS Transfer Family 主控台建立連接器頁面顯示基本身分驗證區段，其中包含選擇現有的秘密。\]](http://docs.aws.amazon.com/zh_tw/transfer/latest/userguide/images/as2-basic-auth-select-secret.png)


### 在 中建立秘密 AWS Secrets Manager
<a name="as2-secret-details-asm"></a>

下列程序說明如何建立適當的秘密，以搭配 AS2 連接器使用。

**注意**  
只有在您使用 HTTPS 時，才能使用基本身分驗證。<a name="as2-auth-secret-key"></a>

**在 Secrets Manager for AS2 基本身分驗證中存放使用者登入資料**

1. 登入 AWS 管理主控台 並在 https：//[https://console.aws.amazon.com/secretsmanager/](https://console.aws.amazon.com/secretsmanager/) 開啟 AWS Secrets Manager 主控台。

1. 在左側導覽窗格中，選擇**秘密**。

1. 在**秘密**頁面上，選擇**儲存新的秘密**。

1. 在**選擇秘密類型**頁面上，針對**秘密類型**，選擇**其他類型的秘密**。

1. 在**鍵/值對**區段中，選擇**鍵/值**索引標籤。
   + **金鑰** – 輸入 **Username**。
   + **value** – 輸入授權連線至合作夥伴伺服器的使用者名稱。

1. 如果您想要提供密碼，請選擇**新增資料列**，然後在**鍵/值對**區段中，選擇**鍵/值**索引標籤。

   選擇**新增資料列**，然後在**鍵/值對**區段中，選擇**鍵/值**索引標籤。
   + **金鑰** – 輸入 **Password**。
   + **value** – 輸入使用者的密碼。

1. 如果您想要提供私有金鑰，請選擇**新增資料列**，然後在**金鑰/值對**區段中，選擇**金鑰/值**索引標籤。
   + **金鑰** – 輸入 **PrivateKey**。
   + **value** – 輸入使用者的私有金鑰。此值必須以 OpenSSH 格式存放，且必須對應至遠端伺服器中為此使用者存放的公有金鑰。

1. 選擇**下一步**。

1. 在**設定秘密**頁面上，輸入秘密的名稱和描述。我們建議您使用 的字首**aws/transfer/**做為名稱。例如，您可以將秘密命名為 **aws/transfer/connector-1**。

1. 選擇**下一步**，然後在**設定輪**換頁面上接受預設值。然後選擇**下一步**。

1. 在**檢閱**頁面上，選擇**存放**以建立和存放秘密。

建立秘密之後，您可以在建立連接器時選擇秘密 （請參閱 [設定 AS2 連接器](#configure-as2-connector))。在您啟用基本身分驗證的步驟中，從可用秘密的下拉式清單中選擇秘密。

## 檢視 AS2 連接器詳細資訊
<a name="connectors-view-info"></a>

您可以在 AWS Transfer Family 主控台中找到 AS2 AWS Transfer Family connector 的詳細資訊和屬性清單。AS2 連接器的屬性包括其 URL、角色、設定檔、MDNs、標籤和監控指標。

這是檢視連接器詳細資訊的程序。

**檢視連接器詳細資訊**

1. 在 https：//[https://console.aws.amazon.com/transfer/](https://console.aws.amazon.com/transfer/) 開啟 AWS Transfer Family 主控台。

1. 在左側導覽窗格中，選擇 **Connectors (連接器)**。

1. 在**連接器 ID** 欄中選擇識別符，以查看所選連接器的詳細資訊頁面。

您可以選擇**編輯**，在連接器的詳細資訊頁面上變更 AS2 連接器的屬性。

![\[Transfer Family 主控台連接器詳細資訊頁面，顯示所選連接器的 URL、存取角色和記錄角色。\]](http://docs.aws.amazon.com/zh_tw/transfer/latest/userguide/images/as2-connector-details_01-top.png)


![\[Transfer Family 主控台連接器詳細資訊頁面，顯示所選連接器的 AS2 組態詳細資訊。\]](http://docs.aws.amazon.com/zh_tw/transfer/latest/userguide/images/as2-connector-details_02-middle.png)


![\[Transfer Family 主控台連接器詳細資訊頁面，顯示所選連接器的 AS2 基本身分驗證區段詳細資訊、標籤、靜態 IP 和 AS2 監控資訊。\]](http://docs.aws.amazon.com/zh_tw/transfer/latest/userguide/images/as2-basic-auth-details-pane.png)


**注意**  
您可以執行下列 AWS Command Line Interface (AWS CLI 命令：  

```
aws transfer describe-connector --connector-id your-connector-id
```
如需詳細資訊，請參閱 API 參考[https://docs.aws.amazon.com/transfer/latest/APIReference/API_DescribeConnector.html](https://docs.aws.amazon.com/transfer/latest/APIReference/API_DescribeConnector.html)中的 。

# 傳送和接收 AS2 訊息
<a name="send-as2-messages"></a>

本節說明傳送和接收 AS2 訊息的程序。它也提供與 AS2 訊息相關聯的檔案名稱和位置的詳細資訊。

下表列出 AS2 訊息的可用加密演算法，以及何時可以使用它們。


| 加密演算法 | HTTP | HTTPS | 備註 | 
| --- |--- |--- |--- |
| AES128\$1CBC | Yes | Yes |  | 
| AES192\$1CBC | Yes | Yes |  | 
| AES256\$1CBC | Yes | Yes |  | 
| DES\$1EDE3\$1CBC | Yes | Yes | Only use this algorithm if you must support a legacy client that requires it, as it is a weak encryption algorithm. | 
| NONE | No | Yes | If you are sending messages to a Transfer Family server, you can only select NONE if you are using an Application Load Balancer (ALB). | 

**Topics**
+ [接收 AS2 訊息程序](#as2-inbound-process)
+ [透過 HTTPS 傳送和接收 AS2 訊息](#as2-https-process)
+ [使用 AS2 連接器傳輸檔案](#transfer-as2-connectors)
+ [檔案名稱和位置](#file-names-as2)
+ [狀態碼](#status-codes)
+ [範例 JSON 檔案](#file-as2-json)

## 接收 AS2 訊息程序
<a name="as2-inbound-process"></a>

傳入程序定義為正在傳輸到 AWS Transfer Family 伺服器的訊息或檔案。傳入訊息的順序如下：

1. 管理員或自動化程序會在合作夥伴的遠端 AS2 伺服器上啟動 AS2 檔案傳輸。

1. 合作夥伴的遠端 AS2 伺服器會簽署和加密檔案內容，然後將 HTTP POST 請求傳送至 Transfer Family 上託管的 AS2 傳入端點。

1. 使用伺服器、合作夥伴、憑證和協議的設定值，Transfer Family 會解密並驗證 AS2 承載。檔案內容會存放在設定的 Amazon S3 檔案存放區中。

1. 簽章的 MDN 回應會與 HTTP 回應內嵌傳回，或透過個別 HTTP POST 請求以非同步方式傳回原始伺服器。

1. 稽核線索會寫入 Amazon CloudWatch，其中包含交換的詳細資訊。

1. 解密的檔案可在名為 的資料夾中使用`inbox/processed`。

![\[顯示傳入訊息處理順序的圖表。\]](http://docs.aws.amazon.com/zh_tw/transfer/latest/userguide/images/as2-architecture-inbound.png)


## 透過 HTTPS 傳送和接收 AS2 訊息
<a name="as2-https-process"></a>

本節說明如何設定 Transfer Family 伺服器，該伺服器使用 AS2 通訊協定透過 HTTPS 傳送和接收訊息。

**Topics**
+ [透過 HTTPS 傳送 AS2 訊息](#send-https)
+ [透過 HTTPS 接收 AS2 訊息](#receive-https)

### 透過 HTTPS 傳送 AS2 訊息
<a name="send-https"></a>

若要使用 HTTPS 傳送 AS2 訊息，請使用下列資訊建立連接器：
+ 針對 URL，指定 HTTPS URL
+ 針對加密演算法，選取任何可用的演算法。
**注意**  
 若要在不使用加密時傳送訊息至 Transfer Family 伺服器 （亦即，您`NONE`為加密演算法選取 )，您必須使用 Application Load Balancer (ALB)。
+ 提供連接器的剩餘值，如中所述[設定 AS2 連接器](configure-as2-connector.md)。

### 透過 HTTPS 接收 AS2 訊息
<a name="receive-https"></a>

 AWS Transfer Family AS2 伺服器目前僅透過連接埠 5080 提供 HTTP 傳輸。不過，您可以使用您選擇的連接埠和憑證，在 Transfer Family 伺服器 VPC 端點之前終止網路或應用程式負載平衡器上的 TLS。透過此方法，您可以讓傳入的 AS2 訊息使用 HTTPS。

**先決條件**
+ VPC 必須與 AWS 區域 Transfer Family 伺服器位於相同的 中。
+ VPC 的子網路必須位於您要使用伺服器的可用區域內。
**注意**  
每個 Transfer Family 伺服器最多可支援三個可用區域。
+ 在與伺服器相同的區域中配置最多三個彈性 IP 地址。或者，您可以選擇使用自己的 IP 地址範圍 (BYOIP)。
**注意**  
彈性 IP 地址的數量必須符合您搭配伺服器端點使用的可用區域數量。

您可以設定 Network Load Balance (NLB) 或 Application Load Balancer (ALB)。下表列出每種方法的優缺點。

下表提供當您使用 NLB 與 ALB 終止 TLS 時的功能差異。


| 功能 | Network Load Balancer (NLB) | Application Load Balancer (ALB) | 
| --- | --- | --- | 
| 延遲 | 在網路層操作時降低延遲。 | 在應用程式層操作時延遲較高。 | 
| 靜態 IP 支援 | 可以連接可以是靜態的彈性 IP 地址。 | 無法連接彈性 IP 地址： 提供基礎 IP 地址可以變更的網域。 | 
| 進階路由 | 不支援進階路由。 | 支援進階路由。無需加密即可注入 AS2 所需的`X-Forwarded-Proto`標頭。 此標頭說明於 https：//[developer.mozilla.org](https://developer.mozilla.org/) 網站上的 [X-Forwarded-Proto](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Forwarded-Proto)。 | 
| TLS/SSL 終止 | 支援 TLS/SSL 終止 | 支援 TLS/SSL 終止 | 
| 交互 TLS (mTLS) | Transfer Family 目前不支援使用 NLB for mTLS | 支援 mTLS | 

------
#### [ Configure NLB ]

此程序說明如何在 VPC 中設定面向網際網路的 Network Load Balancer (NLB)。<a name="create-nlb-AS2"></a>

**建立 Network Load Balancer 並將伺服器的 VPC 端點定義為負載平衡器的目標**

1. 開啟位於 https：//[https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) 的 Amazon Elastic Compute Cloud 主控台。

1. 從導覽窗格中，選擇**負載平衡器**，然後選擇**建立負載平衡器**。

1. 在 **Network Load Balancer** 下，選擇**建立**。

1. 在**基本組態**區段中，輸入下列資訊：
   + 在**名稱**中，輸入負載平衡器的描述性名稱。
   + 對於 **Scheme (結構描述)**，選擇 **Internet-facing (面向網際網路)**。
   + 針對 **IP 地址類型**，選擇 **IPv4**。

1. 在**網路映射**區段中，輸入下列資訊：
   + 針對 **VPC**，選擇您建立的虛擬私有雲端 (VPC)。
   + 在**映射**下，選擇與公有子網路相關聯的可用區域，這些子網路可在與伺服器端點搭配使用的相同 VPC 中使用。
   + 針對每個子網路的 **IPv4 地址**，選擇您配置的其中一個彈性 IP 地址。

1. 在**接聽程式和轉接**區段中，輸入下列資訊：
   + 針對**通訊協定**，選擇 **TLS**。
   + 針對**連接埠**，輸入 **5080**。
   + 針對**預設動作**，選擇**建立目標群組**。如需建立新目標群組的詳細資訊，請參閱 [若要建立目標群組](#create-target-group)。

   建立目標群組之後，請在**預設動作**欄位中輸入其名稱。

1. 在**安全接聽程式設定**區段中，選擇**預設 SSL/TLS 憑證區域中的憑證**。

1. 選擇**建立負載平衡器**以建立 NLB。

1. （選用，但建議） 開啟 Network Load Balancer 的存取日誌，以維護完整的稽核線索，如 [Network Load Balancer 的存取日誌](https://docs.aws.amazon.com/elasticloadbalancing/latest/network/load-balancer-access-logs.html)中所述。

   建議您執行此步驟，因為 TLS 連線會在 NLB 終止。因此， Transfer Family AS2 CloudWatch 日誌群組中反映的來源 IP 地址是 NLB 的私有 IP 地址，而不是交易合作夥伴的外部 IP 地址。

------
#### [ Configure ALB ]

此程序說明如何在 VPC 中設定 Application Load Balancer (ALB)。<a name="create-alb-AS2"></a>

**建立 Application Load Balancer 並將伺服器的 VPC 端點定義為負載平衡器的目標**

1. 開啟位於 https：//[https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) 的 Amazon Elastic Compute Cloud 主控台。

1. 從導覽窗格中，選擇**負載平衡器**，然後選擇**建立負載平衡器**。

1. 在 **Application Load Balancer** (應用程式負載平衡器) 下，選擇 **Create** (建立)。

1. 在 ALB 主控台中，在連接埠 443 (HTTPS) 上建立新的 HTTP 接聽程式。

1. (選用)。如果您想要設定交互身分驗證 (mTLS)，請設定安全設定和信任存放區。

   1. 將您的 SSL/TLS 憑證連接至接聽程式。

   1. 在**用戶端憑證處理**下，選取**相互身分驗證 (mTLS)**。

   1. 選擇**使用信任存放區驗證**。

   1. 在**進階 mTLS 設定**下，透過上傳您的 CA 憑證來選擇或建立信任存放區。

1. 建立新的目標群組，並將 Transfer Family AS2 伺服器端點的私有 IP 地址新增為連接埠 5080 上的目標。如需建立新目標群組的詳細資訊，請參閱 [若要建立目標群組](#create-target-group)。

1. 設定目標群組的運作狀態檢查，以在連接埠 5080 上使用 HTTP 通訊協定。

1. 建立新的規則，將 HTTPS 流量從接聽程式轉送到目標群組。

1. 設定接聽程式以使用您的 SSL/TLS 憑證。

------

在您設定負載平衡器之後，用戶端會透過自訂連接埠接聽程式與負載平衡器通訊。然後，負載平衡器會透過連接埠 5080 與伺服器通訊。<a name="create-target-group"></a>

**若要建立目標群組**

1. 在先前的程序中選擇**建立目標群組**後，系統會將您導向至新目標**群組的指定群組詳細資訊**頁面。

1.  在**基本組態**區段中，輸入下列資訊。
   + 針對**選擇目標類型**，選擇 **IP 地址**。
   + 針對 **Target group name** (目標群組名稱)，輸入目標群組的名稱。
   + 對於**通訊協定**，您的選擇取決於您使用的是 ALB 還是 NLB。
     + 針對 Network Load Balancer (NLB)，選擇 **TCP**
     + 針對 Application Load Balancer (ALB)，選擇 **HTTP**
   + 針對**連接埠**，輸入 **5080**。
   + 針對 **IP 地址**類型，選擇 **IPv4**。
   + 針對 **VPC**，選擇您為 Transfer Family AS2 伺服器建立的 VPC。

1. <a name="vpc-register-targets"></a>在**運作狀態檢查**區段中，選擇**運作狀態檢查通訊協定**。
   + 針對 ALB，選擇 **HTTP**
   + 針對 NLB，選擇 **TCP**

1. <a name="vpc-add-to-list"></a>選擇**下一步**。

1. 在**註冊目標**頁面上，輸入下列資訊：
   + 針對**網路**，請確認已指定您為 Transfer Family AS2 伺服器建立的 VPC。
   + 針對 **IPv4 地址**，輸入 Transfer Family AS2 伺服器端點的私有 IPv4 地址。

      如果您的伺服器有多個端點，請選擇**新增 IPv4 地址**，以新增另一列來輸入另一個 IPv4 地址。重複此程序，直到您為所有伺服器的端點輸入私有 IP 地址為止。
   + 確定**連接埠**設定為 **5080**。
   + 選擇**包含為以下待定**項目，將您的項目新增至**檢閱目標**區段。

1. 在**檢閱目標**區段中，檢閱您的 IP 目標。

1. 選擇**建立目標群組**，然後返回先前建立 NLB 的程序，並在指示處輸入新的目標群組。

**從彈性 IP 地址測試對伺服器的存取**

使用彈性 IP 地址或 Network Load Balancer 的 DNS 名稱，透過自訂連接埠連線至伺服器。

**重要**  
使用負載平衡器上設定之子網路[的網路存取控制清單 （網路 ACLs)](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-network-acls.html)，從用戶端 IP 地址管理對伺服器的存取。網路 ACL 許可是在子網路層級設定，因此規則會套用至使用子網路的所有資源。您無法透過使用安全群組控制來自用戶端 IP 地址的存取，因為負載平衡器的目標類型設定為 **IP 地址**，而不是**執行個體**。因此，負載平衡器不會保留來源 IP 地址。如果 [Network Load Balancer 的運作狀態檢查](https://docs.aws.amazon.com/elasticloadbalancing/latest/network/target-group-health-checks.html)失敗，這表示負載平衡器無法連線至伺服器端點。若要疑難排解此問題，請檢查下列項目：  
確認伺服器[端點相關聯的安全群組](https://aws.amazon.com/premiumsupport/knowledge-center/sftp-enable-elastic-ip-custom-port/)允許從負載平衡器上設定的子網路傳入連線。負載平衡器必須能夠透過連接埠 5080 連線至伺服器端點。
確認伺服器**的狀態**為**線上**。

## 使用 AS2 連接器傳輸檔案
<a name="transfer-as2-connectors"></a>

AS2 連接器在交易合作夥伴之間建立關係，以將 AS2 訊息從 Transfer Family 伺服器傳輸到外部、合作夥伴擁有的目的地。

您可以使用 Transfer Family 透過參考連接器 ID 和檔案路徑來傳送 AS2 訊息，如下列 `start-file-transfer` AWS Command Line Interface (AWS CLI) 命令所示：

```
aws transfer start-file-transfer --connector-id c-1234567890abcdef0 \
--send-file-paths "/amzn-s3-demo-source-bucket/myfile1.txt" "/amzn-s3-demo-source-bucket/myfile2.txt"
```

若要取得連接器的詳細資訊，請執行下列命令：

```
aws transfer list-connectors
```

`list-connectors` 命令會傳回連接器IDs、URLs 和 Amazon Resource Name (ARNs)。

若要傳回特定連接器的屬性，請使用您要使用的 ID 執行下列命令：

```
aws transfer describe-connector --connector-id your-connector-id
```

`describe-connector` 命令會傳回連接器的所有屬性，包括其 URL、角色、設定檔、訊息處置通知 (MDNs)、標籤和監控指標。

您可以檢視 JSON 和 MDN 檔案，確認合作夥伴已成功收到檔案。這些檔案是根據中所述的慣例命名[檔案名稱和位置](#file-names-as2)。如果您在建立連接器時設定了記錄角色，您也可以檢查 CloudWatch 日誌是否有 AS2 訊息的狀態。

若要檢視 AS2 連接器詳細資訊，請參閱 [檢視 AS2 連接器詳細資訊](configure-as2-connector.md#connectors-view-info)。如需建立 AS2 連接器的詳細資訊，請參閱 [設定 AS2 連接器](configure-as2-connector.md)。

**傳送 AS2 傳出訊息**

傳出程序定義為從 傳送至 AWS 外部用戶端或服務的訊息或檔案。傳出訊息的順序如下：

1. 管理員呼叫 `start-file-transfer` AWS Command Line Interface (AWS CLI) 命令或 `StartFileTransfer` API 操作。此操作會參考`connector`組態。

1. Transfer Family 偵測到新的檔案請求並找到檔案。檔案會壓縮、簽署和加密。

1. 傳輸 HTTP 用戶端會執行 HTTP POST 請求，將承載傳輸到合作夥伴的 AS2 伺服器。

1. 程序會傳回已簽署的 MDN 回應，並內嵌 HTTP 回應 （同步 MDN)。

1. 當檔案在不同傳輸階段之間移動時，程序會將 MDN 回應接收和處理詳細資訊交付給客戶。

1. 遠端 AS2 伺服器可讓合作夥伴管理員使用解密和驗證的檔案。

![\[顯示傳出訊息處理順序的圖表。\]](http://docs.aws.amazon.com/zh_tw/transfer/latest/userguide/images/as2-architecture-outbound.png)


AS2 處理支援許多 RFC 4130 通訊協定，著重於常見的使用案例，以及與AS2-enabled的現有伺服器實作整合。如需支援組態的詳細資訊，請參閱 [AS2 組態](create-b2b-server.md#as2-supported-configurations)。

## 檔案名稱和位置
<a name="file-names-as2"></a>

本節討論 AS2 傳輸的檔案命名慣例。

對於傳入檔案傳輸，請注意下列事項：
+ 您可以在 協議中指定基礎目錄。基礎目錄是結合字首的 Amazon S3 儲存貯體名稱，如果有的話。例如 `/amzn-s3-demo-bucket/AS2-folder`。
+ 如果成功處理傳入檔案，檔案 （和對應的 JSON 檔案） 會儲存到 `/processed` 資料夾。例如 `/amzn-s3-demo-bucket/AS2-folder/processed`。

  JSON 檔案包含下列欄位：
  + `agreement-id` 
  + `as2-from`
  + `as2-to`
  + `as2-message-id`
  + `transfer-id`
  + `client-ip`
  + `connector-id`
  + `failure-message`
  + `file-path`
  + `message-subject`
  + `mdn-message-id`
  + `mdn-subject`
  + `requester-file-name`
  + `requester-content-type`
  + `server-id`
  + `status-code`
  + `failure-code`
  + `transfer-size`
+ 如果無法成功處理傳入檔案，檔案 （和對應的 JSON 檔案） 會儲存到 `/failed` 資料夾。例如 `/amzn-s3-demo-bucket/AS2-folder/failed`。
+ 傳輸的檔案會以 的形式存放在 `processed` 資料夾中`original_filename.messageId.original_extension`。也就是說，傳輸的訊息 ID 會在原始副檔名之前附加至檔案名稱。
+ JSON 檔案會建立並儲存為 `original_filename.messageId.original_extension.json`。除了要新增的訊息 ID 之外，字串`.json`也會附加到傳輸的檔案名稱。
+ 訊息處置通知 (MDN) 檔案會建立並儲存為 `original_filename.messageId.original_extension.mdn`。除了要新增的訊息 ID 之外，字串`.mdn`也會附加到傳輸的檔案名稱。
+ 如果有名為 的傳入檔案`ExampleFileInS3Payload.dat`，則會建立下列檔案：
  + **檔案** – `ExampleFileInS3Payload.c4d6b6c7-23ea-4b8c-9ada-0cb811dc8b35@44313c54b0a46a36.dat`
  + **JSON** – `ExampleFileInS3Payload.c4d6b6c7-23ea-4b8c-9ada-0cb811dc8b35@44313c54b0a46a36.dat.json` 
  + **MDN** – `ExampleFileInS3Payload.c4d6b6c7-23ea-4b8c-9ada-0cb811dc8b35@44313c54b0a46a36.dat.mdn` 

對於傳出傳輸，命名類似，差別在於沒有傳入訊息檔案，而且傳輸訊息的傳輸 ID 會新增至檔案名稱。`StartFileTransfer` API 操作 （或另一個程序或指令碼呼叫此操作時） 會傳回傳輸 ID。
+ `transfer-id` 是與檔案傳輸相關聯的識別符。所有屬於`StartFileTransfer`呼叫的請求都會共用 `transfer-id`。
+ 基礎目錄與您用於來源檔案的路徑相同。也就是說，基礎目錄是您在 `StartFileTransfer` API 操作或`start-file-transfer` AWS CLI 命令中指定的路徑。例如：

  ```
  aws transfer start-file-transfer --send-file-paths /amzn-s3-demo-bucket/AS2-folder/file-to-send.txt
  ```

  如果您執行此命令，則 MDN 和 JSON 檔案會儲存在 `/amzn-s3-demo-bucket/AS2-folder/processed`（傳輸成功） 或 `/amzn-s3-demo-bucket/AS2-folder/failed`（傳輸失敗） 中。
+ JSON 檔案會建立並儲存為 `original_filename.transferId.messageId.original_extension.json`。
+ MDN 檔案會建立並儲存為 `original_filename.transferId.messageId.original_extension.mdn`。
+ 如果有名為 的傳出檔案`ExampleFileOutTestOutboundSyncMdn.dat`，則會建立下列檔案：
  + **JSON** – `ExampleFileOutTestOutboundSyncMdn.dedf4601-4e90-4043-b16b-579af35e0d83.fbe18db8-7361-42ff-8ab6-49ec1e435f34@c9c705f0baaaabaa.dat.json`
  + **MDN** – `ExampleFileOutTestOutboundSyncMdn.dedf4601-4e90-4043-b16b-579af35e0d83.fbe18db8-7361-42ff-8ab6-49ec1e435f34@c9c705f0baaaabaa.dat.mdn`

您也可以檢查 CloudWatch 日誌以檢視傳輸的詳細資訊，包括任何失敗的。

## 狀態碼
<a name="status-codes"></a>

下表列出當您或合作夥伴傳送 AS2 訊息時，可以記錄到 CloudWatch 日誌的所有狀態碼。不同的訊息處理步驟適用於不同的訊息類型，且僅用於監控。COMPLETED 和 FAILED 狀態代表處理中的最後一個步驟，並顯示在 JSON 檔案中。


****  

| Code | Description | 處理完成？ | 
| --- | --- | --- | 
| 處理中 | 訊息正在轉換為其最終格式。例如，解壓縮和解密步驟都具有此狀態。 | 否 | 
| MDN\$1TRANSMIT | 訊息處理正在傳送 MDN 回應。 | 否 | 
| MDN\$1RECEIVE | 訊息處理正在接收 MDN 回應。 | 否 | 
| COMPLETED (已完成) | 訊息處理已成功完成。此狀態包括針對傳入訊息傳送 MDN 或針對傳出訊息進行 MDN 驗證時。 | 是 | 
| 失敗 | 訊息處理失敗。如需錯誤代碼的清單，請參閱 [AS2 錯誤代碼](as2-monitoring.md#as2-error-codes)。 | 是 | 

## 範例 JSON 檔案
<a name="file-as2-json"></a>

本節列出傳入和傳出傳輸的範例 JSON 檔案，包括用於成功傳輸和失敗傳輸的範例檔案。

成功傳輸的範例傳出檔案：

```
{
  "requester-content-type": "application/octet-stream",
  "message-subject": "File xyzTest from MyCompany_OID to partner YourCompany",
  "requester-file-name": "TestOutboundSyncMdn-9lmCr79hV.dat",
  "as2-from": "MyCompany_OID",
  "connector-id": "c-c21c63ceaaf34d99b",
  "status-code": "COMPLETED",
  "disposition": "automatic-action/MDN-sent-automatically; processed",
  "transfer-size": 3198,
  "mdn-message-id": "OPENAS2-11072022063009+0000-df865189-1450-435b-9b8d-d8bc0cee97fd@PartnerA_OID_MyCompany_OID",
  "mdn-subject": "Message be18db8-7361-42ff-8ab6-49ec1e435f34@c9c705f0baaaabaa has been accepted",
  "as2-to": "PartnerA_OID",
  "transfer-id": "dedf4601-4e90-4043-b16b-579af35e0d83",
  "file-path": "/amzn-s3-demo-bucket/as2testcell0000/openAs2/TestOutboundSyncMdn-9lmCr79hV.dat",
  "as2-message-id": "fbe18db8-7361-42ff-8ab6-49ec1e435f34@c9c705f0baaaabaa",
  "timestamp": "2022-07-11T06:30:10.791274Z"
}
```

未成功傳輸的範例傳出檔案：

```
{
  "failure-code": "HTTP_ERROR_RESPONSE_FROM_PARTNER",
  "status-code": "FAILED",
  "requester-content-type": "application/octet-stream",
  "subject": "Test run from Id da86e74d6e57464aae1a55b8596bad0a to partner 9f8474d7714e476e8a46ce8c93a48c6c",
  "transfer-size": 3198,
  "requester-file-name": "openAs2TestOutboundWrongAs2Ids-necco-3VYn5n8wE.dat",
  "as2-message-id": "9a9cc9ab-7893-4cb6-992a-5ed8b90775ff@718de4cec1374598",
  "failure-message": "http://Test123456789.us-east-1.elb.amazonaws.com:10080 returned status 500 for message with ID 9a9cc9ab-7893-4cb6-992a-5ed8b90775ff@718de4cec1374598",
  "transfer-id": "07bd3e07-a652-4cc6-9412-73ffdb97ab92",
  "connector-id": "c-056e15cc851f4b2e9",
  "file-path": "/amzn-s3-demo-bucket-4c1tq6ohjt9y/as2IntegCell0002/openAs2/openAs2TestOutboundWrongAs2Ids-necco-3VYn5n8wE.dat",
  "timestamp": "2022-07-11T21:17:24.802378Z"
}
```

成功傳輸的傳入檔案範例：

```
{
  "requester-content-type": "application/EDI-X12",
  "subject": "File openAs2TestInboundAsyncMdn-necco-5Ab6bTfCO.dat sent from MyCompany to PartnerA",
  "client-ip": "10.0.109.105",
  "requester-file-name": "openAs2TestInboundAsyncMdn-necco-5Ab6bTfCO.dat",
  "as2-from": "MyCompany_OID",
  "status-code": "COMPLETED",
  "disposition": "automatic-action/MDN-sent-automatically; processed",
  "transfer-size": 1050,
  "mdn-subject": "Message Disposition Notification",
  "as2-message-id": "OPENAS2-11072022233606+0000-5dab0452-0ca1-4f9b-b622-fba84effff3c@MyCompany_OID_PartnerA_OID",
  "as2-to": "PartnerA_OID",
  "agreement-id": "a-f5c5cbea5f7741988",
  "file-path": "processed/openAs2TestInboundAsyncMdn-necco-5Ab6bTfCO.OPENAS2-11072022233606+0000-5dab0452-0ca1-4f9b-b622-fba84effff3c@MyCompany_OID_PartnerA_OID.dat",
  "server-id": "s-5f7422b04c2447ef9",
  "timestamp": "2022-07-11T23:36:36.105030Z"
}
```

未成功傳輸的傳入檔案範例：

```
{
  "failure-code": "INVALID_REQUEST",
  "status-code": "FAILED",
  "subject": "Sending a request from InboundHttpClientTests",
  "client-ip": "10.0.117.27",
  "as2-message-id": "testFailedLogs-TestRunConfig-Default-inbound-direct-integ-0c97ee55-af56-4988-b7b4-a3e0576f8f9c@necco",
  "as2-to": "0beff6af56c548f28b0e78841dce44f9",
  "failure-message": "Unsupported date format: 2022/123/456T",
  "agreement-id": "a-0ceec8ca0a3348d6a",
  "as2-from": "ab91a398aed0422d9dd1362710213880",
  "file-path": "failed/01187f15-523c-43ac-9fd6-51b5ad2b08f3.testFailedLogs-TestRunConfig-Default-inbound-direct-integ-0c97ee55-af56-4988-b7b4-a3e0576f8f9c@necco",
  "server-id": "s-0582af12e44540b9b",
  "timestamp": "2022-07-11T06:30:03.662939Z"
}
```

# 自訂 AS2 訊息的 HTTP 標頭
<a name="as2-custom-http-headers"></a>

傳送 AS2 訊息給交易合作夥伴時，您可能需要自訂 HTTP 標頭以符合特定需求，或增強與合作夥伴 AS2 伺服器組態的相容性。此 CloudFormation 範本會建立 基礎設施，為透過 傳送的 AS2 訊息啟用自訂 HTTP 標頭 AWS Transfer Family。它設定 Amazon API Gateway 和 Lambda 函數做為代理，允許動態修改交易合作夥伴的 AS2 伺服器所需的標頭。

使用此範本執行下列動作：
+ 將自訂 HTTP 標頭新增至傳出 AS2 訊息
+ 使用自訂值覆寫預設標頭值
**重要**  
覆寫預設標頭值時請小心，因為這可能會導致傳送失敗：需要一些 AS2 標頭。
+ 確保與具有特定標頭要求的交易合作夥伴相容

## 範本概觀
<a name="template-overview"></a>

範本會建立下列主要元件：
+ 處理和轉送 AS2 訊息的 Lambda 函數
+ 公開 Lambda 函數的 Amazon API Gateway 
+ Lambda 函數的 IAM 角色和許可
+ HTTPS 支援的條件式資源

範本檔案可在此處取得：[動態 HTTP 標頭範本](https://s3.amazonaws.com/aws-transfer-resources/as2-templates/dynamic-http-headers.template.yml)。

## 運作方式
<a name="how-it-works"></a>

1. Amazon API Gateway 接收來自 的傳入 AS2 訊息 AWS Transfer Family。

1. 請求會轉送至 Lambda 函數。

1. Lambda 函數會處理請求，並視需要新增或修改標頭。

1. 修改後的請求接著會轉送至合作夥伴的 AS2 伺服器。

1. 來自合作夥伴伺服器的回應會透過 Lambda 和 Amazon API Gateway 傳回至 AWS Transfer Family。

## 主要功能
<a name="key-features"></a>
+ *動態標頭修改：*允許自訂主旨標頭，並新增其他必要的標頭。
+ *通訊協定支援：*適用於 HTTP 和 HTTPS 通訊協定。
+ *彈性組態：*允許合作夥伴主機、連接埠和路徑的規格。

## 實作詳細資訊
<a name="implementation-details"></a>

範本會實作下列重要元件：

### Lambda 功能
<a name="lambda-function"></a>

解決方案的核心是 Node.js Lambda 函數，可：
+ 從 Amazon API Gateway 接收請求
+ 根據組態和傳入請求資料修改標頭
+ 將修改後的請求轉送至合作夥伴的 AS2 伺服器
+ 同時處理 HTTP 和 HTTPS 通訊協定
+ 包括錯誤處理和記錄

### Amazon API Gateway
<a name="api-gateway"></a>

HTTP API 設定為：
+ 接收傳入的 AS2 訊息
+ 將請求路由至 Lambda 函數
+ 將回應傳回至 AWS Transfer Family

### 範本參數
<a name="as2-header-template-parameter-details"></a>

輸入範本參數的資訊，如下所示。請注意，所有這些參數都是字串。
+ `Environment`：此參數用於命名範本建立的資源：無論是用於開發或生產環境。有效值為 **dev** 和 **prod**。
+ `PartnerHost`：AS2 合作夥伴伺服器的 IP 地址或主機名稱。
+ `PartnerPort`：AS2 合作夥伴伺服器的連接埠號碼。如果未指定，HTTP 預設為 80，HTTPS 預設為 443。
+ `PartnerPath`：合作夥伴伺服器上 AS2 端點的路徑
+ `ProtocolType`：用於 AS2 通訊的通訊協定：有效值為 **HTTP** 和 **HTTPS**。

### 條件式資源
<a name="conditional-resources"></a>

對於 HTTPS 支援，範本會依條件建立：
+ CA 憑證的 Lambda Layer
+ Lambda 函數中的 HTTPS 特定組態

## 部署和使用
<a name="deployment-and-usage"></a>

**使用 CloudFormation 範本自訂 AS2 HTTP 標頭**

1. 在 https：//[https://console.aws.amazon.com/cloudformation](https://console.aws.amazon.com/cloudformation/) 開啟 CloudFormation 主控台。

1. 在左側導覽窗格中，選擇 **Stacks (堆疊)**。

1. 選擇 **Create stack (建立堆疊)**，然後選擇 **With new resources (standard) (使用新資源 (標準))。**

1. 在**先決條件 - 準備範本**區段中，選擇**選擇現有範本**。

1. 複製此連結、[動態 HTTP 標頭範本](https://s3.amazonaws.com/aws-transfer-resources/as2-templates/dynamic-http-headers.template.yml)，並將其貼入 **Amazon S3 URL** 欄位。

1. 選擇**下一步**。

1. 將您的資訊填入參數詳細資訊。這些會在 中詳細說明[範本參數](#as2-header-template-parameter-details)。

1. 選擇**下一步**。在**設定堆疊選項**頁面上，再次選擇**下一步**。

1. 檢閱您要建立之堆疊的詳細資訊，然後選擇**建立堆疊**。
**注意**  
在頁面底部**的功能**下，您必須確認 CloudFormation 可能會建立 AWS Identity and Access Management (IAM) 資源。

部署此 CloudFormation 堆疊之後：

1. 請注意堆疊輸出中提供的 Amazon API Gateway 端點 URL。

1. 更新現有的 AWS Transfer Family Connector 以使用此新的 Amazon API Gateway 端點。

1. 解決方案現在將處理 AS2 訊息，並依設定新增或修改標頭。

**警告**  
僅修改您的合作夥伴明確預期的主旨標頭或新增標頭。變更其他標頭可能會導致傳輸失敗。

# 監控 AS2 用量
<a name="as2-monitoring"></a>

您可以使用 Amazon CloudWatch 和 監控 AS2 活動 AWS CloudTrail。若要檢視其他 Transfer Family 伺服器指標，請參閱 [AWS Transfer Family 伺服器 Amazon CloudWatch 記錄](structured-logging.md)


**AS2 指標**  

| 指標 | 描述 | 
| --- | --- | 
| InboundMessage |  從交易合作夥伴成功接收的 AS2 訊息總數。 單位：計數 期間：5 分鐘  | 
| InboundFailedMessage |  未成功從交易合作夥伴收到的 AS2 訊息總數。也就是說，交易合作夥伴傳送訊息，但 Transfer Family 伺服器無法成功處理。 單位：計數 期間：5 分鐘  | 
| OutboundMessage |  從 Transfer Family 伺服器成功傳送至交易合作夥伴的 AS2 訊息總數。 單位：計數 期間：5 分鐘  | 
| OutboundFailedMessage |  未成功傳送給交易合作夥伴的 AS2 訊息總數。也就是說，它們是從 Transfer Family 伺服器傳送，但交易合作夥伴未成功收到。 單位：計數 期間：5 分鐘  | 
| DaysUntilExpiry |  憑證過期前的天數，由匯入時憑證上的 `InactiveDate` 設定決定。 單位：計數 維度：`CertificateId`、 `Description`（如有提供） 期間：1 天 如需詳細資訊，請參閱[AS2 憑證輪換](managing-as2-partners.md#as2-certificate-rotation)。  | 

## AS2 狀態碼
<a name="as2-monitor-status-codes"></a>

下表列出當您或合作夥伴傳送 AS2 訊息時，可以記錄到 CloudWatch 日誌的所有狀態碼。不同的訊息處理步驟適用於不同的訊息類型，且僅用於監控。COMPLETED 和 FAILED 狀態代表處理中的最後一個步驟，並顯示在 JSON 檔案中。


****  

| 代碼 | 描述 | 處理完成？ | 
| --- | --- | --- | 
| 處理中 | 訊息正在轉換為其最終格式。例如，解壓縮和解密步驟都具有此狀態。 | 否 | 
| MDN\$1TRANSMIT | 訊息處理正在傳送 MDN 回應。 | 否 | 
| MDN\$1RECEIVE | 訊息處理正在接收 MDN 回應。 | 否 | 
| COMPLETED (已完成) | 訊息處理已成功完成。此狀態包括針對傳入訊息傳送 MDN 或針對傳出訊息進行 MDN 驗證時。 | 是 | 
| 失敗 | 訊息處理失敗。如需錯誤代碼的清單，請參閱 [AS2 錯誤代碼](#as2-error-codes)。 | 是 | 

## AS2 錯誤代碼
<a name="as2-error-codes"></a>

下表列出並說明您可能會從 AS2 檔案傳輸收到的錯誤代碼。


**AS2 錯誤代碼**  

| 代碼 | 錯誤 | 描述和解析度 | 
| --- | --- | --- | 
| ACCESS\$1DENIED |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/transfer/latest/userguide/as2-monitoring.html)  |  處理任何 `SendFilePaths` 為無效或格式不正確的`StartFileTransfer`請求時發生。也就是說，路徑缺少 Amazon S3 儲存貯體名稱，或路徑包含無效的字元。如果 Transfer Family 無法擔任存取角色或記錄角色，也會發生。請確定路徑包含有效的 Amazon S3 儲存貯體名稱和金鑰名稱。 | 
| AGREEMENT\$1NOT\$1FOUND | 找不到協議。 | 找不到協議，或協議與非作用中設定檔相關聯。更新 Transfer Family 伺服器中的協議，以包含作用中的設定檔。 | 
| CONNECTOR\$1NOT\$1FOUND | 找不到連接器或相關組態。 |  找不到連接器，或者連接器與非作用中設定檔相關聯。 更新連接器以包含作用中設定檔。  | 
| CREDENTIALS\$1RETRIEVAL\$1FAILED |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/transfer/latest/userguide/as2-monitoring.html)  |  對於 AS2 基本身分驗證，秘密必須正確格式化。下列解析度對應於上一欄中列出的錯誤。 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/transfer/latest/userguide/as2-monitoring.html)  | 
| DECOMPRESSION\$1FAILED | 無法解壓縮訊息。 |  傳送的檔案已損毀，或壓縮演算法無效。 重新傳送訊息並確認已使用 ZLIB 壓縮，或在未啟用壓縮的情況下重新傳送訊息。  | 
| DECRYPT\$1FAILED | 無法解密訊息 ID。確保合作夥伴擁有正確的公有加密金鑰。 |  解密失敗。 確認合作夥伴使用有效的憑證傳送承載，並使用有效的加密演算法執行加密。  | 
| DECRYPT\$1FAILED\$1INVALID\$1SMIME\$1FORMAT | 無法剖析信封 mimePart。 |  MIME 承載已損毀或為不支援的 SMIME 格式。 寄件者應確保支援其使用的格式，然後重新傳送承載。  | 
| DECRYPT\$1FAILED\$1NO\$1DECRYPTION\$1KEY\$1FOUND | 找不到相符的解密金鑰。 |  合作夥伴設定檔沒有指派符合訊息的憑證，或符合訊息的憑證現在已過期或不再有效。 您必須更新合作夥伴設定檔，並確保其中包含有效的憑證。  | 
| DECRYPT\$1FAILED\$1UNSUPPORTED\$1ENCRYPTION\$1ALG | 使用 ID 為 encryption-ID 的不支援演算法請求的 SMIME 承載解密。 |  遠端寄件者已使用不支援的加密演算法傳送 AS2 承載。 寄件者必須選擇 支援的加密演算法 AWS Transfer Family。  | 
| DUPLICATE\$1MESSAGE | 重複或雙重處理的步驟。 |  承載具有重複的處理步驟。例如，有兩個加密步驟。 使用簽署、壓縮和加密的單一步驟重新傳送訊息。  | 
| ENCRYPT\$1FAILED\$1NO\$1ENCRYPTION\$1KEY\$1FOUND |  在設定檔中找不到有效的公有加密憑證：*local-profile-ID*  | Transfer Family 正在嘗試加密傳出訊息，但找不到本機設定檔的加密憑證。解析選項：[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/transfer/latest/userguide/as2-monitoring.html) | 
| ENCRYPTION\$1FAILED | 無法加密 file-name。 |  要傳送的檔案不適用於加密。 確認檔案位於預期的 AS2 位置，且 AWS Transfer Family 具有讀取檔案的許可。  | 
| FILE\$1SIZE\$1TOO\$1LARGE | 檔案大小太大。 | 當傳送或接收超過檔案大小限制的檔案時，就會發生這種情況。 | 
| HTTP\$1ERROR\$1RESPONSE\$1FROM\$1PARTNER |  *partner-URL* 傳回 ID=*message-ID* 訊息的狀態 400。  |  與合作夥伴的 AS2 伺服器通訊時，傳回未預期的 HTTP 回應碼。 合作夥伴可能可以透過 AS2 伺服器日誌提供更多診斷。  | 
| INSUFFICENT\$1MESSAGE\$1SECURITY\$1UNENCRYPTED | 需要加密。 | 合作夥伴將未加密的訊息傳送到不受支援的 Transfer Family。寄件者必須使用加密的承載。 | 
| INVALID\$1ENDPOINT\$1PROTOCOL | 僅支援 HTTP 和 HTTPS。 | 您必須將 HTTP 或 HTTPS 指定為 AS2 連接器組態中的通訊協定。 | 
| INVALID\$1REQUEST |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/transfer/latest/userguide/as2-monitoring.html)  |  此錯誤有幾個原因。下列解析度對應於上一欄中列出的錯誤。 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/transfer/latest/userguide/as2-monitoring.html) | 
| INVALID\$1URL\$1FORMAT | URL 格式無效：URL |  當您使用以格式不正確 URL 設定的連接器來傳送傳出訊息時，就會發生這種情況。 確定連接器已設定有效的 HTTP 或 HTTPS URL。  | 
| MDN\$1RESPONSE\$1INDICATES\$1AUTHENTICATION\$1FAILED | 不適用 | 接收者無法驗證寄件者。交易合作夥伴會傳回 MDN 至 Transfer 系列，[其中包含處置修飾詞](https://datatracker.ietf.org/doc/html/rfc4130#section-7.5.4)錯誤：身分驗證失敗。 | 
| MDN\$1RESPONSE\$1INDICATES\$1DECOMPRESSION\$1FAILED | 不適用 | 當接收者無法解壓縮訊息內容時，就會發生這種情況。交易合作夥伴會傳回 MDN 至 Transfer 系列，[其中包含處置修飾詞](https://datatracker.ietf.org/doc/html/rfc4130#section-7.5.4)錯誤：解壓縮失敗。 | 
| MDN\$1RESPONSE\$1INDICATES\$1DECRYPTION\$1FAILED | 不適用 | 接收者無法解密訊息內容。交易合作夥伴會傳回 MDN 至 Transfer 系列，[其中包含處置修飾詞](https://datatracker.ietf.org/doc/html/rfc4130#section-7.5.4)錯誤：身分驗證失敗。 | 
| MDN\$1RESPONSE\$1INDICATES\$1INSUFFICIENT\$1MESSAGE\$1SECURITY | 不適用 | 接收者預期訊息會經過簽署或加密，但不會。交易合作夥伴會傳回 MDN 以傳輸系列，[其中包含處置修飾詞](https://datatracker.ietf.org/doc/html/rfc4130#section-7.5.4)錯誤：insufficient-message-security。在連接器上啟用簽署和/或加密，以符合交易合作夥伴的期望。 | 
| MDN\$1RESPONSE\$1INDICATES\$1INTEGRITY\$1CHECK\$1FAILED | 不適用 | 接收者無法驗證內容完整性。交易合作夥伴會傳回 MDN 以傳輸系列，[其中包含處置修飾詞](https://datatracker.ietf.org/doc/html/rfc4130#section-7.5.4)錯誤：integrity-check-failed。 | 
| PATH\$1NOT\$1FOUND |  無法建立目錄 *file-path*。找不到父路徑。  | Transfer Family 正在嘗試在客戶的 Amazon S3 儲存貯體中建立目錄，但找不到儲存貯體。請確定`StartFileTransfer`命令中提及的每個路徑都包含現有儲存貯體的名稱。 | 
| SEND\$1FILE\$1NOT\$1FOUND | 找不到檔案路徑檔案路徑。 |  Transfer Family 在傳送檔案操作中找不到檔案。 檢查設定的主目錄和路徑是否有效，以及 Transfer Family 是否具有檔案的讀取許可。  | 
| SERVER\$1NOT\$1FOUND | 找不到與訊息相關聯的伺服器。 | Transfer Family 在接收訊息時找不到伺服器。如果在處理傳入訊息期間刪除伺服器，可能會發生這種情況。 | 
| SERVER\$1NOT\$1ONLINE | 伺服器伺服器 ID 未上線。 | Transfer Family 伺服器離線。啟動伺服器，使其可以接收和處理訊息。 | 
| SIGNING\$1FAILED | 無法簽署檔案。 |  要傳送的檔案無法用於簽署，或無法執行簽署。 確認檔案位於預期的 AS2 位置，且 AWS Transfer Family 具有讀取檔案的許可。  | 
| SIGNING\$1FAILED\$1NO\$1SIGNING\$1KEY\$1FOUND | 找不到設定檔的憑證：local-profile-ID。 | 嘗試簽署傳出訊息，但找不到本機設定檔的簽署憑證。解析選項：[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/transfer/latest/userguide/as2-monitoring.html) | 
| UNABLE\$1RESOLVE\$1HOST\$1TO\$1IP\$1ADDRESS | 無法將主機名稱解析為 IP 地址。 |  Transfer Family 無法在 AS2 連接器中設定的公有 DNS 伺服器上執行 DNS 到 IP 地址解析。 更新連接器以指向有效的合作夥伴 URL。  | 
| UNABLE\$1TO\$1CONNECT\$1TO\$1REMOTE\$1HOST\$1OR\$1IP | 與端點的連線逾時。 |  Transfer Family 無法建立與已設定合作夥伴 AS2 伺服器的通訊端連線。 檢查合作夥伴的 AS2 伺服器是否在設定的 IP 地址可用。  | 
| UNABLE\$1TO\$1RESOLVE\$1HOSTNAME | 無法解析主機名稱主機名稱。 |  Transfer Family 伺服器無法使用公有 DNS 伺服器解析合作夥伴的主機名稱。 檢查設定的主機是否已註冊，以及 DNS 記錄是否有時間發佈。  | 
| VERIFICATION\$1FAILED | AS2 訊息 ID 或 MIC 代碼不相符的簽章驗證失敗。 | 檢查寄件者的簽署憑證是否符合遠端設定檔的簽署憑證。同時檢查 MIC 演算法是否與 相容 AWS Transfer Family。 | 
| VERIFICATION\$1FAILED\$1NO\$1MATCHING\$1KEY\$1FOUND |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/transfer/latest/userguide/as2-monitoring.html)  | AWS Transfer Family 正在嘗試驗證所接收訊息的簽章，但合作夥伴設定檔找不到相符的簽署憑證。解析選項：[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/transfer/latest/userguide/as2-monitoring.html) | 

# 憑證過期監控
<a name="certificate-expiry-monitoring"></a>

AWS Transfer Family 會自動監控 AS2 憑證的過期日期，並發佈 Amazon CloudWatch 指標，協助您追蹤憑證何時接近過期。這可讓您主動管理憑證續約，並避免服務中斷。

## DaysUntilExpiry 指標
<a name="daysuntilexpiry-metric"></a>

當您匯入憑證以供 AS2 使用時，Transfer Family 會自動建立名為 的 CloudWatch 指標`DaysUntilExpiry`。此指標會根據`InactiveDate`您在匯入憑證時指定的 ，追蹤憑證過期之前剩餘的天數。

**指標詳細資訊：**
+ **指標名稱：** `DaysUntilExpiry`
+ **命名空間：** `AWS/Transfer`
+ **維度：** `CertificateId` （一律存在）、 `Description`（如果在憑證匯入期間提供）
+ **單位：**計數 （天）
+ **頻率：**每日發佈

**重要**  
匯入 Transfer Family 憑證後，最多可能需要一整天的時間，才能將此指標傳送到您的帳戶。

當憑證接近其非作用中日期時，指標值每天會減少 1。例如，如果憑證過期前有 30 天，指標會顯示 30 天，第二天會顯示 29 天，以此類推。

## 憑證監控的最佳實務
<a name="certificate-monitoring-best-practices"></a>

設定憑證過期監控時，請遵循下列最佳實務：
+ **設定多個提醒閾值：**建立不同時段 （例如過期前 30 天、14 天和 7 天） 的警示，以提供足夠的憑證續約時間。
+ **使用適當的統計資料：**建立警示時使用 `Maximum` 統計資料，以確保您擷取最新的指標值。
+ **設定適當的警示動作：**設定通知來提醒可以續約憑證的適當團隊成員。
+ **測試您的提醒：**定期測試您的通知系統，以確保提醒正確傳送。
+ **記錄您的程序：**維護憑證續約程序的文件，以及負責不同憑證的人員。

## 警示組態範例
<a name="certificate-monitoring-examples"></a>

以下是不同通知案例的一些警示組態範例：

### 30 天過期警告
<a name="thirty-day-warning"></a>

建立警示，在憑證過期前 30 天或更短時間內觸發：
+ **指標：**DaysUntilExpiry
+ **統計資料：**最大值
+ **期間：**1 天
+ **閾值：**30
+ **比較：**小於或等於閾值
+ **缺少資料處理：**將缺少的資料視為良好 （未違反）

### 關鍵 7 天過期警告
<a name="critical-warning"></a>

建立關鍵警示，當憑證過期前有 7 天或更短時間時觸發：
+ **指標：**DaysUntilExpiry
+ **統計資料：**最大值
+ **期間：**1 天
+ **閾值：**7
+ **比較：**小於或等於閾值
+ **缺少資料處理：**將缺少的資料視為良好 （未違反）