本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
發送和接收 AS2 消息
本節說明傳送和接收 AS2 訊息的程序。它還提供了與 AS2 消息相關聯的文件名和位置的詳細信息。
下表列出 AS2 訊息可用的加密演算法,以及何時可以使用它們。
加密演算法 | HTTP | HTTPS | 備註 |
---|---|---|---|
亚洲 | 是 | 是 | |
俄羅斯 | 是 | 是 | |
西 256_C | 是 | 是 | |
德斯 _ 埃德 3_CBC | 是 | 是 | 僅當您必須支援需要此演算法的舊版用戶端時,才使用此演算法,因為它是弱式加密演算法。 |
NONE | 否 | 是 | 如果您要將訊息傳送至 Transfer Family 伺服器,則只能選取是NONE 否使用應用程式負載平衡器 (ALB)。 |
傳送 AS2 訊息程序
輸出處理程序會定義為從 AWS 外部用戶端或服務傳送的訊息或檔案。輸出郵件的順序如下:
-
管理員會呼叫
start-file-transfer
AWS Command Line Interface (AWS CLI) 命令或StartFileTransfer
API 作業。此操作參照connector
模型組態。 -
Transfer Family 會偵測到新的檔案請求並找到檔案。該文件被壓縮,簽名和加密。
-
傳輸 HTTP 用戶端會執行 HTTP POST 要求,將承載傳輸至合作夥伴的 AS2 伺服器。
-
該進程返回簽名的 MDN 響應,內聯 HTTP 響應(同步 MDN)。
-
由於文件傳輸的不同階段之間移動,該過程提供 MDN 響應接收和處理細節給客戶。
-
遠端 AS2 伺服器可讓合作夥伴管理員使用已解密和驗證的檔案。
AS2 處理支援許多 RFC 4130 通訊協定,專注於常見使用案例,並與現有啟用 AS2 的伺服器實作整合。如需支援組態的詳細資訊,請參閱。
接收 AS2 訊息程序
輸入程序會定義為正在傳輸到 AWS Transfer Family 伺服器的訊息或檔案。輸入訊息的順序如下:
管理員或自動化程序會在合作夥伴的遠端 AS2 伺服器上啟動 AS2 檔案傳輸。
合作夥伴的遠端 AS2 伺服器會簽署並加密檔案內容,然後將 HTTP POST 要求傳送至傳輸系列上裝載的 AS2 輸入端點。
-
Transfer Family 會使用伺服器、合作夥伴、憑證和合約的設定值,解密並驗證 AS2 承載。檔案內容存放在已設定的 Amazon S3 檔案存放區中。
-
已簽署的 MDN 回應會以內嵌方式傳回 HTTP 回應,或透過個別的 HTTP POST 要求以非同步方式傳回原始伺服器。
稽核記錄會寫入 Amazon,其中 CloudWatch 包含有關交易所的詳細資訊。
解密的檔案位於名為
inbox/processed
的資料夾中。
透過 HTTPS 傳送及接收 AS2 訊息
本節說明如何設定使用 AS2 通訊協定透過 HTTPS 傳送及接收訊息的傳送系列伺服器。
通過 HTTPS 發送 AS2 消息
若要使用 HTTPS 傳送 AS2 郵件,請使用下列資訊建立連接器:
-
對於該網址,請指定一個 HTTPS 網址
對於加密演算法,請選取任何可用的演算法。
注意
若要在不使用加密的情況下將訊息傳送至 Transfer Family 伺服器 (亦即,您
NONE
為加密演算法選取),您必須使用 Application Load Balancer 器 (ALB)。-
如中所述,提供連接器的剩餘值設定 AS2 連接器。
透過 HTTPS 接收 AS2 訊息
AWS Transfer Family AS2 服務器目前僅提供通過端口 5080 的 HTTP 傳輸。不過,您可以使用您選擇的連接埠和憑證,在 Transfer Family 伺服器 VPC 端點前面的網路或應用程式負載平衡器上終止 TLS。使用這種方法,您可以讓內送 AS2 消息使用 HTTPS。
先決條件
-
VPC 必須與您的 Transfer Family 伺服器位於 AWS 區域 相同的位置。
-
VPC 的子網路必須位於您要在其中使用伺服器的可用區域內。
注意
每個 Transfer Family 伺服器最多可支援三個可用區域。
-
在與伺服器相同的區域中,最多配置三個彈性 IP 位址。或者,您可以選擇攜帶自己的 IP 位址範圍 (BYOIP)。
注意
彈性 IP 位址的數目必須與您搭配伺服器端點使用的可用區域數目相符。
您可以設定網路負載平衡 (NLB) 或 Application Load Balancer (ALB)。下表列出了每種方法的優缺點。
下表提供當您使用 NLB 與 ALB 終止 TLS 時的功能差異。
功能 | Network Load Balancer (NLB) | Application Load Balancer (ALB) |
---|---|---|
Latency (延遲) | 更低的延遲,因為它在網絡層運行。 | 更高的延遲,因為它在應用程序層運行。 |
靜態 IP 支援 | 可以附加可以是靜態的彈性 IP 地址。 | 無法附加彈性 IP 位址:提供基礎 IP 位址可以變更的網域。 |
進階路由 | 不支援進階路由。 | 支持高級路由。可以在不加密的情況下注入 AS2 所需的 |
TLS/SSL 終止 | 支持TLS/SSL 終端 | 支持TLS/SSL 終端 |
相互 TLS | Transfer Family 目前不支援使用 NLB 進行 MTL | Support MTL |
設定負載平衡器之後,用戶端會透過自訂連接埠接聽程式與負載平衡器通訊。然後,負載平衡器會透過連接埠 5080 與伺服器通訊。
若要建立目標群組
-
在上一個程序中選擇建立目標群組之後,您就會移至新目標群組的「指定群組詳細資訊」頁面。
-
在「基本組態」區段中,輸入下列資訊。
-
針對 [選擇目標類型],選擇 [IP 位址]。
-
針對 Target group name (目標群組名稱),輸入目標群組的名稱。
-
對於通訊協定,您的選擇取決於您使用的是 ALB 還是 NLB。
-
對於 Network Load Balancer (NLB),請選擇 TCP
-
對於應用程式負載平衡器 (ALB),請選擇 HTTP
-
-
針對連接埠,輸入
5080
。 -
針對 [IP 位址類型],請選擇 [IPv4]。
-
對於 VPC,請選擇您為 Transfer Family AS2 伺服器建立的 VPC。
-
-
在 [健全狀況檢查] 區段中,選擇 [Health 全狀況檢查通訊協定] 的 TCP
-
選擇下一步。
-
在「註冊目標」頁面上,輸入下列資訊:
-
對於網路,請確認已指定為 Transfer Family AS2 伺服器建立的 VPC。
-
對於 IPv4 位址,請輸入 Transfer Family AS2 伺服器端點的私人 IPv4 位址。
如果您的伺服器有多個端點,請選擇 [新增 IPv4 位址] 以新增另一個資料列以輸入另一個 IPv4 位址。重複此程序,直到您輸入所有伺服器端點的私有 IP 位址為止。
-
確定連接埠已設定為
5080
。 -
選擇下方的「包含為待決」,將您的項目新增至「檢閱目標」區段。
-
-
在「檢閱目標」區段中,檢閱您的 IP 目標。
-
選擇建立目標群組,然後返回上一個建立 NLB 的程序,然後輸入指示的新目標群組。
測試從彈性 IP 地址對服務器的訪問
使用彈性 IP 位址或 Network Load Balancer 的 DNS 名稱,透過自訂 Connect 埠連線至伺服器。
重要
使用負載平衡器上設定之子網路的網路存取控制清單 (網路 ACL),管理從用戶端 IP 位址對伺服器的存取。網路 ACL 權限是在子網路層級設定的,因此規則會套用至使用該子網路的所有資源。您無法使用安全性群組來控制來自用戶端 IP 位址的存取,因為負載平衡器的目標類型是設定為 IP 位址而非執行個體。因此,負載平衡器不會保留來源 IP 位址。如果網路負載平衡器的健康狀態檢查失敗,這表示負載平衡器無法連線到伺服器端點。若要疑難排解此問題,請檢查下列項目:
-
確認伺服器端點的關聯安全性群組
允許從負載平衡器上設定的子網路輸入連線。負載平衡器必須能夠透過連接埠 5080 連線到伺服器端點。 -
確認伺服器的「狀態」為「線上」。
使用 AS2 連接器傳輸檔案
AS2 連接器會在貿易夥伴之間建立關係,以便將 AS2 訊息從 Transfer Family 伺服器傳輸到外部合作夥伴擁有的目的地。
您可以透過參考連接器 ID 和檔案的路徑,使用「Transfer Family 列」來傳送 AS2 訊息,如下列 start-file-transfer
AWS Command Line Interface (AWS CLI) 指令所示:
aws transfer start-file-transfer --connector-id c-
1234567890abcdef0
\ --send-file-paths "/DOC-EXAMPLE-SOURCE-BUCKET/myfile1.txt
" "/DOC-EXAMPLE-SOURCE-BUCKET/myfile2.txt
"
若要取得連接器的詳細資料,請執行下列命令:
aws transfer list-connectors
該list-connectors
命令會傳回連接器的連接器 ID、URL 和 Amazon 資源名稱 (ARN)。
若要傳回特定連接器的內容,請使用您要使用的 ID 執行下列命令:
aws transfer describe-connector --connector-id
your-connector-id
命describe-connector
令會傳回連接器的所有內容,包括其 URL、角色、設定檔、訊息配置通知 (MDN)、標籤和監視度量。
您可以檢視 JSON 和 MDN 檔案,確認合作夥伴已成功收到檔案。這些檔案是根據中所述的慣例來命名檔案名稱和位置。如果您在建立連接器時設定記錄角色,您也可以檢查記 CloudWatch 錄中 AS2 訊息的狀態。
若要檢視 AS2 連接器詳細資訊,請參閱檢視 AS2 連接器詳細資訊。如需建立 AS2 連接器的更多資訊,請參閱設定 AS2 連接器。
檔案名稱和位置
本節討論 AS2 傳輸的檔案命名慣例。
對於傳入檔案傳輸,請注意下列事項:
-
您可以在協定中指定基本目錄。基本目錄是 Amazon S3 儲存貯體名稱,並結合前置詞 (如果有的話)。例如
/
。DOC-EXAMPLE-BUCKET
/AS2-folder -
如果成功處理內送檔案,則檔案 (以及對應的 JSON 檔案) 會儲存到
/processed
資料夾中。例如/
。DOC-EXAMPLE-BUCKET
/AS2-folder/processedJSON 檔案包含下列欄位:
-
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
資料夾中。例如/DOC-EXAMPLE-BUCKET/AS2-folder/failed
。 -
傳輸的檔案以儲存在資
processed
料夾中
。也就是說,傳輸的訊息 ID 會附加至檔案名稱之前的原始副檔名。original_filename
.messageId
.original_extension
-
系統會建立 JSON 檔案並將其另存為
。除了要新增的訊息 ID 之外,字串original_filename
.messageId
.original_extension
.json.json
還會附加至傳輸檔案的名稱。 -
訊息處理通知 (MDN) 檔案會建立並另存為。
除了要新增的訊息 ID 之外,字串original_filename
.messageId
.original_extension
.mdn.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
/DOC-EXAMPLE-BUCKET/AS2-folder/file-to-send.txt
如果您執行此指令,MDN 和 JSON 檔案會儲存在
/DOC-EXAMPLE-BUCKET/AS2-folder/processed
(成功傳輸),或/DOC-EXAMPLE-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 記錄以檢視轉移的詳細資料,包括任何失敗的資料。
狀態碼
下表列出當您或您的合作夥伴傳送 AS2 訊息時,可以 CloudWatch 記錄到記錄中的所有狀態碼。不同的郵件處理步驟適用於不同的郵件類型,並且僅用於監視。「已完成」和「失敗」狀態代表處理中的最後一個步驟,並且在 JSON 檔案中可見。
代碼 | 描述 | 處理完成了嗎? |
---|---|---|
處理 | 郵件正在轉換為最終格式。例如,解壓縮和解密步驟都具有此狀態。 | 否 |
中央傳輸 | 訊息處理正在傳送 MDN 回應。 | 否 |
MDN 接收 | 訊息處理正在接收 MDN 回應。 | 否 |
COMPLETED (已完成) | 訊息處理已成功完成。此狀態包括為輸入郵件傳送 MDN 或外寄郵件的 MDN 驗證時。 | 是 |
失敗 | 郵件處理失敗。如需錯誤碼的清單,請參閱AS2 錯誤代碼。 | 是 |
範例 JSON 檔案
本節列出輸入和出站傳輸的 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": "/DOC-EXAMPLE-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": "/DOC-EXAMPLE-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" }