AS2 メッセージの送受信 - AWS Transfer Family

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

AS2 メッセージの送受信

このセクションでは、AS2メッセージの送受信プロセスについて説明します。また、AS2メッセージに関連付けられたファイル名と場所に関する詳細も提供します。

AS2 メッセージ送信プロセス

アウトバウンドプロセスは、 から外部クライアントまたはサービス AWS に送信されるメッセージまたはファイルとして定義されます。アウトバウンドメッセージのシーケンスは以下の通りである:

  1. 管理者は start-file-transfer AWS Command Line Interface (AWS CLI) コマンドまたは StartFileTransferAPIオペレーションを呼び出します。この操作は connector 設定を参照します。

  2. Transfer Family は新しいファイルリクエストを検出し、ファイルを見つけます。ファイルは圧縮、署名、暗号化されます。

  3. 転送HTTPクライアントは、ペイロードをパートナーのAS2サーバーに送信するHTTPPOSTリクエストを実行します。

  4. プロセスは、署名付きMDNレスポンスをHTTPレスポンス (同期 ) とインラインで返しますMDN。

  5. ファイルが送信の異なるステージ間を移動すると、プロセスはMDNレスポンスの受信と処理の詳細を顧客に配信します。

  6. リモートAS2サーバーは、復号化および検証されたファイルをパートナー管理者が利用できるようにします。

送信メッセージの処理シーケンスを示す図。

AS2 処理は、一般的なユースケースと既存の AS2対応サーバー実装との統合に焦点を当て、多くの RFC 4130 プロトコルをサポートしています。サポートされている構成の詳細については、AS2 サポートされている設定 を参照してください。

AS2 メッセージ受信プロセス

インバウンドプロセスは、 AWS Transfer Family サーバーに転送されるメッセージまたはファイルとして定義されます。受信メッセージの順序は次のとおりです。

  1. 管理者または自動プロセスは、パートナーのリモートAS2サーバーでAS2ファイル転送を開始します。

  2. パートナーのリモートAS2サーバーはファイルコンテンツに署名して暗号化し、Transfer Family でホストされているAS2インバウンドエンドポイントにHTTPPOSTリクエストを送信します。

  3. Transfer Family は、サーバー、パートナー、証明書、および契約の設定値を使用してペイAS2ロードを復号化して検証します。ファイルの内容は、設定された Amazon S3 ファイルストアに保存されます。

  4. 署名付きMDNレスポンスは、HTTPレスポンスとインラインで返されるか、別のHTTPPOSTリクエストによって非同期的に送信元サーバーに返されます。

  5. 監査証跡は、交換の詳細 CloudWatch とともに Amazon に書き込まれます。

  6. 復号されたファイルは、inbox/processed という名前のフォルダにあります。

受信メッセージの処理シーケンスを示す図。

経由でAS2のメッセージの送受信 HTTPS

このセクションでは、AS2プロトコルを使用して 経由でメッセージを送受信する Transfer Family サーバーを設定する方法について説明しますHTTPS。

経由でAS2メッセージを送信する HTTPS

を使用してAS2メッセージを送信するにはHTTPS、次の情報を含むコネクタを作成します。

  • にURL、 を指定します。 HTTPS URL

  • 暗号化アルゴリズムには、NONE を指定します。

  • AS2 コネクタの設定」の説明に従って、コネクタの残りの値を指定します。

経由でAS2メッセージを受信する HTTPS

AWS Transfer Family AS2 サーバーは現在、ポート 5080 経由のHTTPトランスポートのみを提供します。ただし、Transfer Family サーバーVPCエンドポイントの前にあるロードバランサーTLSで終了するには、選択したポートと証明書を使用します。このアプローチでは、受信AS2メッセージに を使用させることができますHTTPS。

前提条件

  • は Transfer Family サーバー AWS リージョン と同じ にあるVPC必要があります。

  • のサブネットは、サーバーを使用するアベイラビリティーゾーン内にあるVPC必要があります。

    注記

    Transfer Family サーバーごとに、最大 3 つのアベイラビリティーゾーンをサポートできます。

  • サーバーと同じリージョンに最大 3 つの Elastic IP アドレスを割り当てます。または、独自の IP アドレス範囲 () を選択することもできますBYOIP。

    注記

    Elastic IP アドレスの数は、サーバーエンドポイントで使用するアベイラビリティーゾーンの数と一致する必要があります。

Network Load Balancer を設定する

でインターネット向け Network Load Balancer (NLB) を設定しますVPC。

Network Load Balancer を作成し、サーバーのVPCエンドポイントをロードバランサーのターゲットとして定義するには
  1. で Amazon Elastic Compute Cloud コンソールを開きますhttps://console.aws.amazon.com/ec2/

  2. ナビゲーションペインで、[ロードバランサー] を選択し、[ロードバランサーを作成] を選択します。

  3. [Network Load Balancer] で、[Create] (作成) を選択します。

  4. [基本設定] セクションで、以下の情報を入力します。

    • [Name] (名前) に、対象のロードバランサーを表現した説明的な名前を入力します。

    • [スキーム] で、[インターネット接続] を選択します。

    • [IP address type] (IP アドレスタイプ) で、IPv4 を選択します。

  5. [ネットワークマッピング] セクションで、以下の情報を入力します。

    • VPC、作成した仮想プライベートクラウド (VPC) を選択します。

    • 「マッピング」で、サーバーエンドポイントVPCで使用するのと同じ で使用できるパブリックサブネットに関連付けられたアベイラビリティーゾーンを選択します。

    • 各サブネットのIPv4アドレスで、割り当てた Elastic IP アドレスのいずれかを選択します。

  6. [リスナーとルーティング] セクションに、以下の情報を入力します。

    • プロトコル では、 を選択しますTLS

    • [Port (ポート)] に「5080」と入力します。

    • [デフォルトアクション] で、[ターゲットグループの作成] を選択します。新しいターゲットグループの作成の詳細については、「対象グループを作成するには」を参照してください。

    ターゲットグループを作成した後で、[デフォルトアクション] フィールドにその名前を入力します。

  7. Secure Listener 設定セクションで、デフォルトSSL/TLS証明書領域で証明書を選択します。

  8. ロードバランサーの作成 を選択して を作成しますNLB。

  9. (オプションですが、推奨されます) Network Load Balancer のアクセスログを有効にして、完全な監査証跡を維持します。これについては、「Network Load Balancer のアクセスログ」を参照してください。

    TLS 接続は で終了するため、このステップをお勧めしますNLB。したがって、Transfer Family AS2 CloudWatchロググループに反映される送信元 IP アドレスは、取引相手NLBの外部 IP アドレスではなく、 のプライベート IP アドレスです。

ロードバランサーを設定すると、クライアントはカスタムポートリスナーを介してロードバランサーと通信します。次に、ロードバランサーはポート 5080 を介してサーバーと通信します。

対象グループを作成するには
  1. 前の手順で [ターゲットグループの作成] を選択すると、新しいターゲットグループの [グループの詳細を指定] ページが表示されます。

  2. [基本設定] セクションで、以下の情報を入力します。

    • [ターゲットタイプを選択][IP アドレス] を選択します。

    • [ターゲットグループ名] に、ターゲットグループの名前を入力します。

    • プロトコル では、 を選択しますTCP

    • [Port (ポート)] に「5080」と入力します。

    • [IP address type] (IP アドレスタイプ) で、IPv4 を選択します。

    • ではVPC、Transfer Family AS2サーバー用にVPC作成した を選択します。

  3. ヘルスチェックセクションで、ヘルスチェックプロトコル TCPを選択します。

  4. [Next (次へ)] を選択します。

  5. [ターゲットの登録] ページで、次の情報を入力します。

    • ネットワーク の場合、Transfer Family AS2サーバー用にVPC作成した が指定されていることを確認します。

    • IPv4 アドレス には、Transfer Family AS2サーバーのエンドポイントのプライベートIPv4アドレスを入力します。

      サーバーに複数のエンドポイントがある場合は、IPv4アドレスの追加を選択して別の行を追加して別のIPv4アドレスを入力します。サーバーのすべてのエンドポイントのプライベート IP アドレスを入力し終わるまで、このプロセスを繰り返します。

    • [ポート]5080 に設定されていることを確認します。

    • [保留中として以下を含める] を選択し、[レビューターゲット] セクションにエントリを追加します。

  6. [レビューターゲット] セクションで、IP ターゲットをレビューします。

  7. 「ターゲットグループの作成」を選択し、前の手順に戻って を作成しNLB、指定された新しいターゲットグループを入力します。

Elastic IP アドレスからサーバーへのアクセスをテストします

Elastic IP アドレスまたは Network Load Balancer DNSの名前を使用して、カスタムポート経由でサーバーに接続します。

重要

ロードバランサーに設定されたサブネットのネットワークアクセスコントロールリスト (ネットワークACLs) を使用して、クライアント IP アドレスからのサーバーへのアクセスを管理します。ネットワークACLアクセス許可はサブネットレベルで設定されるため、ルールはサブネットを使用しているすべてのリソースに適用されます。ロードバランサーのターゲットタイプはインスタンスではなく IP アドレスに設定されているため、セキュリティグループを使用してクライアント IP アドレスからのアクセスを制御することはできません。そのため、ロードバランサーはソース IP アドレスを保持しません。Network Load Balancer のヘルスチェックが失敗すると、ロードバランサーはサーバーエンドポイントに接続できなくなります。この問題のトラブルシューティングを行うには、次を確認します。

  • サーバーのエンドポイントに関連付けられたセキュリティグループが、ロードバランサーに設定されているサブネットからのインバウンド接続を許可していることを確認します。ロードバランサーは、ポート 5080 を介してサーバーエンドポイントに接続できる必要があります。

  • サーバーの [状態][オンライン] であることを確認します。

AS2 コネクタを使用したファイルの転送

AS2 コネクタは、Transfer Family サーバーから外部のパートナー所有の宛先にAS2メッセージを転送するための取引パートナー間の関係を確立します。

Transfer Family を使用してAS2メッセージを送信するには、次の start-file-transfer AWS Command Line Interface (AWS CLI) コマンドに示すように、コネクタ ID とファイルへのパスを参照します。

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 コマンドは、コネクタのコネクタ IDs、URLs、および Amazon リソースネーム (ARNs) を返します。

特定のコネクタのプロパティを返すには、使用する ID を指定して以下のコマンドを実行します。

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

describe-connector コマンドは、、ロール、プロファイルURL、メッセージ処理通知 (MDNs)、タグ、モニタリングメトリクスなど、コネクタのすべてのプロパティを返します。

パートナーが正常にファイルを受け取ったことを確認するには、 JSONおよび MDN ファイルを表示します。これらのファイルには、ファイル名と場所 で説明されている規則に従って名前が付けられます。コネクタの作成時にログ記録ロールを設定した場合は、 CloudWatch ログにAS2メッセージのステータスを確認することもできます。

AS2 コネクタの詳細を表示するには、「」を参照してくださいAS2 コネクタの詳細を表示する。AS2 コネクタの作成の詳細については、「」を参照してくださいAS2 コネクタの設定

ファイル名と場所

このセクションでは、AS2転送のファイル命名規則について説明します。

インバウンドファイル転送については、次の点に注意してください。

  • 基本ディレクトリは契約書で指定します。ベースディレクトリは、Amazon S3 バケット名にプレフィックス (ある場合) を組み合わせたものです。例えば、/DOC-EXAMPLE-BUCKET/AS2-folder と指定します。

  • 受信ファイルが正常に処理されると、ファイル (および対応するJSONファイル) が/processedフォルダに保存されます。例えば、/DOC-EXAMPLE-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フォルダに保存されます。例えば、/DOC-EXAMPLE-BUCKET/AS2-folder/failed と指定します。

  • 転送されたファイルは、original_filename.messageId.original_extension として processed フォルダーに保存されます。つまり、転送のメッセージ ID がファイル名の元の拡張子の前に追加されます。

  • JSON ファイルが作成され、 として保存されますoriginal_filename.messageId.original_extension.json。追加されるメッセージ ID に加えて、文字列 .json は転送されたファイルの名前に追加されます。

  • メッセージ処理通知 (MDN) ファイルが作成され、 として保存されますoriginal_filename.messageId.original_extension.mdn。追加されるメッセージ ID に加えて、文字列 .mdn は転送されたファイルの名前に追加されます。

  • ExampleFileInS3Payload.dat という名前の受信ファイルがある場合、次のファイルが作成されます。

    • FileExampleFileInS3Payload.c4d6b6c7-23ea-4b8c-9ada-0cb811dc8b35@44313c54b0a46a36.dat

    • JSONExampleFileInS3Payload.c4d6b6c7-23ea-4b8c-9ada-0cb811dc8b35@44313c54b0a46a36.dat.json

    • MDNExampleFileInS3Payload.c4d6b6c7-23ea-4b8c-9ada-0cb811dc8b35@44313c54b0a46a36.dat.mdn

アウトバウンド転送の場合、名前は似ていますが、受信メッセージファイルがないことと、転送されたメッセージの転送 ID がファイル名に追加される点が異なります。転送 ID は、 StartFileTransferAPIオペレーションによって返されます (または別のプロセスまたはスクリプトがこのオペレーションを呼び出す場合)。

  • transfer-id はファイル転送に関連付けられる識別子です。StartFileTransfer コールの一部であるすべてのリクエストは transfer-id を共有します。

  • ベースディレクトリは、ソースファイルに使用するパスと同じです。つまり、ベースディレクトリは、StartFileTransferAPIオペレーションまたは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 という名前のアウトバウンドファイルがある場合、次のファイルが作成されます。

    • JSONExampleFileOutTestOutboundSyncMdn.dedf4601-4e90-4043-b16b-579af35e0d83.fbe18db8-7361-42ff-8ab6-49ec1e435f34@c9c705f0baaaabaa.dat.json

    • MDNExampleFileOutTestOutboundSyncMdn.dedf4601-4e90-4043-b16b-579af35e0d83.fbe18db8-7361-42ff-8ab6-49ec1e435f34@c9c705f0baaaabaa.dat.mdn

CloudWatch ログを確認して、失敗した転送の詳細を表示することもできます。

ステータスコード

次の表に、ユーザーまたはパートナーがAS2メッセージを送信したときに CloudWatch ログに記録できるすべてのステータスコードを示します。異なるメッセージ処理ステップは、異なるメッセージタイプに適用され、モニタリングのみを目的としています。COMPLETED と FAILEDの状態は、処理の最終ステップを表し、 JSON ファイルに表示されます。

コード 説明 処理が完了しましたか?
PROCESSING メッセージは最終形式に変換中です。例えば、解凍ステップと復号ステップの両方にこのステータスがあります。 不可
MDN_TRANSMIT メッセージ処理はMDNレスポンスを送信しています。 不可
MDN_RECEIVE メッセージ処理がMDN応答を受信しています。 不可
COMPLETED メッセージ処理が正常に完了しました。この状態には、 MDNがインバウンドメッセージまたはアウトバウンドメッセージMDNの検証のために送信される場合が含まれます。 可能
FAILED メッセージ処理に失敗しました。エラーコードのリストについては、「」を参照してくださいAS2 エラーコード 可能

サンプルJSONファイル

このセクションでは、インバウンド転送とアウトバウンド転送の両方のサンプルJSONファイルを一覧表示します。これには、転送が成功し、失敗した転送のサンプルファイルが含まれます。

正常に転送されたアウトバウンドファイルの例:

{ "requester-content-type": "application/octet-stream", "mesage-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": "/testbucket-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" }