本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
傳送和接收 AS2 訊息
本節說明傳送和接收 AS2 訊息的程序。它還提供與 AS2 訊息相關聯的檔案名稱和位置的詳細資訊。
下表列出 AS2 訊息的可用加密演算法,以及何時可以使用它們。
加密演算法 | HTTP | HTTPS | 備註 |
---|---|---|---|
AES128_CBC | Yes | Yes | |
AES192_CBC | Yes | Yes | |
AES256_CBC | Yes | Yes | |
DES_EDE3_CBC | 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). |
接收 AS2 訊息程序
傳入程序定義為正在傳輸到 AWS Transfer Family 伺服器的訊息或檔案。傳入訊息的順序如下:
-
管理員或自動化程序會在合作夥伴的遠端 AS2 伺服器上啟動 AS2 檔案傳輸。
-
合作夥伴的遠端 AS2 伺服器會簽署和加密檔案內容,然後將 HTTP POST 請求傳送至 Transfer Family 上託管的 AS2 傳入端點。
-
使用伺服器、合作夥伴、憑證和協議的設定值,Transfer Family 會解密並驗證 AS2 承載。檔案內容會存放在設定的 Amazon S3 檔案存放區中。
-
簽章的 MDN 回應會與 HTTP 回應內嵌傳回,或透過個別 HTTP POST 請求以非同步方式傳回原始伺服器。
-
稽核線索會寫入 Amazon CloudWatch,其中包含交換的詳細資訊。
-
解密的檔案可在名為 的資料夾中使用
inbox/processed
。

透過 HTTPS 傳送和接收 AS2 訊息
本節說明如何設定 Transfer Family 伺服器,該伺服器使用 AS2 通訊協定透過 HTTPS 傳送和接收訊息。
透過 HTTPS 傳送 AS2 訊息
若要使用 HTTPS 傳送 AS2 訊息,請使用下列資訊建立連接器:
-
針對 URL,指定 HTTPS URL
-
針對加密演算法,選取任何可用的演算法。
注意
若要在不使用加密時傳送訊息至 Transfer Family 伺服器 (亦即,您
NONE
為加密演算法選取 ),您必須使用 Application Load Balancer (ALB)。 -
提供連接器的剩餘值,如中所述設定 AS2 連接器。
透過 HTTPS 接收 AS2 訊息
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) |
---|---|---|
Latency (延遲) | 在網路層操作時降低延遲。 | 在應用程式層操作時延遲較高。 |
靜態 IP 支援 | 可以連接可以是靜態的彈性 IP 地址。 | 無法連接彈性 IP 地址: 提供基礎 IP 地址可以變更的網域。 |
進階路由 | 不支援進階路由。 | 支援進階路由。無需加密即可注入 AS2 所需的 此標頭說明於 https://developer.mozilla.org |
TLS/SSL 終止 | 支援 TLS/SSL 終止 | 支援 TLS/SSL 終止 |
相互 TLS (mTLS) | Transfer Family 目前不支援使用 NLB for mTLS | 支援 mTLS |
設定負載平衡器之後,用戶端會透過自訂連接埠接聽程式與負載平衡器通訊。然後,負載平衡器會透過連接埠 5080 與伺服器通訊。
若要建立目標群組
-
在先前程序中選擇建立目標群組後,系統會將您導向至新目標群組的指定群組詳細資訊頁面。
-
在基本組態區段中,輸入下列資訊。
-
針對選擇目標類型,選擇 IP 地址。
-
針對 Target group name (目標群組名稱),輸入目標群組的名稱。
-
對於通訊協定,您的選擇取決於您使用的是 ALB 還是 NLB。
-
針對 Network Load Balancer (NLB),選擇 TCP
-
針對 Application Load Balancer (ALB),選擇 HTTP
-
-
針對連接埠,輸入
5080
。 -
針對 IP 地址類型,選擇 IPv4。
-
針對 VPC,選擇您為 Transfer Family AS2 伺服器建立的 VPC。
-
-
在運作狀態檢查區段中,選擇運作狀態檢查通訊協定。
-
針對 ALB,選擇 HTTP
-
針對 NLB,選擇 TCP
-
-
選擇下一步。
-
在註冊目標頁面上,輸入下列資訊:
-
針對網路,請確認已指定您為 Transfer Family AS2 伺服器建立的 VPC。
-
針對 IPv4 地址,輸入 Transfer Family AS2 伺服器端點的私有 IPv4 地址。
如果您的伺服器有多個端點,請選擇新增 IPv4 地址,以新增另一列來輸入另一個 IPv4 地址。重複此程序,直到您為所有伺服器的端點輸入私有 IP 地址為止。
-
確定連接埠設定為
5080
。 -
選擇包含為以下待定項目,將您的項目新增至檢閱目標區段。
-
-
在檢閱目標區段中,檢閱您的 IP 目標。
-
選擇建立目標群組,然後返回先前建立 NLB 的程序,並在指示處輸入新的目標群組。
從彈性 IP 地址測試對伺服器的存取
使用彈性 IP 地址或 Network Load Balancer 的 DNS 名稱,透過自訂連接埠連線至伺服器。
重要
使用負載平衡器上設定之子網路的網路存取控制清單 (網路 ACLs),從用戶端 IP 地址管理對伺服器的存取。網路 ACL 許可是在子網路層級設定,因此規則會套用至使用子網路的所有資源。您不能使用安全群組控制來自用戶端 IP 地址的存取,因為負載平衡器的目標類型設定為 IP 地址,而不是執行個體。因此,負載平衡器不會保留來源 IP 地址。如果 Network Load Balancer 的運作狀態檢查失敗,這表示負載平衡器無法連線至伺服器端點。若要疑難排解此問題,請檢查下列項目:
-
確認伺服器端點相關聯的安全群組
允許從負載平衡器上設定的子網路傳入連線。負載平衡器必須能夠透過連接埠 5080 連線至伺服器端點。 -
確認伺服器的狀態為線上。
使用 AS2 連接器傳輸檔案
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 檔案,確認合作夥伴已成功收到檔案。這些檔案是根據中所述的慣例命名檔案名稱和位置。如果您在建立連接器時設定了記錄角色,您也可以檢查 CloudWatch 日誌是否有 AS2 訊息的狀態。
若要檢視 AS2 連接器詳細資訊,請參閱 檢視 AS2 連接器詳細資訊。如需建立 AS2 連接器的詳細資訊,請參閱 設定 AS2 連接器。
傳送 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-enabled的現有伺服器實作整合。如需支援組態的詳細資訊,請參閱 AS2 組態。
檔案名稱和位置
本節討論 AS2 傳輸的檔案命名慣例。
對於傳入檔案傳輸,請注意下列事項:
-
您可以在 協議中指定基礎目錄。基礎目錄是結合字首的 Amazon S3 儲存貯體名稱,如果有的話。例如
/
。amzn-s3-demo-bucket
/AS2-folder -
如果成功處理傳入檔案,檔案 (和對應的 JSON 檔案) 會儲存到
/processed
資料夾。例如/
。amzn-s3-demo-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
資料夾。例如/amzn-s3-demo-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
/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 日誌以檢視傳輸的詳細資訊,包括任何失敗的 。
狀態碼
下表列出當您或合作夥伴傳送 AS2 訊息時,可以記錄到 CloudWatch 日誌的所有狀態碼。不同的訊息處理步驟適用於不同的訊息類型,且僅用於監控。COMPLETED 和 FAILED 狀態代表處理中的最後一個步驟,並顯示在 JSON 檔案中。
代碼 | 描述 | 處理完成? |
---|---|---|
處理中 | 訊息正在轉換為其最終格式。例如,解壓縮和解密步驟都具有此狀態。 | 否 |
MDN_TRANSMIT | 訊息處理正在傳送 MDN 回應。 | 否 |
MDN_RECEIVE | 訊息處理正在接收 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": "/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" }