기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
AS2 메시지 전송 및 수신
이 섹션에서는 AS2 메시지를 보내고 받는 프로세스를 설명합니다. 또한 AS2 메시지와 연결된 파일 이름 및 위치에 대한 세부 정보도 제공합니다.
주제
AS2 메시지 전송 프로세스
아웃바운드 프로세스는 에서 AWS 외부 클라이언트 또는 서비스로 전송되는 메시지 또는 파일로 정의됩니다. 아웃바운드 메시지의 순서는 다음과 같습니다.
-
관리자가
start-file-transfer
AWS Command Line Interface (AWS CLI) 명령 또는StartFileTransfer
API 작업을 호출합니다. 이 작업은connector
구성을 참조합니다. -
Transfer Family는 새 파일 요청을 감지하고 파일을 찾습니다. 파일은 압축, 서명 및 암호화됩니다.
-
전송 HTTP 클라이언트는 페이로드를 파트너의 AS2 서버로 전송하라는 HTTP POST 요청을 수행합니다.
-
이 프로세스는 서명된 MDN 응답을 HTTP 응답과 인라인으로 반환합니다(동기식 MDN).
-
파일이 서로 다른 전송 단계 간에 이동하면 프로세스는 MDN 응답 수신 및 처리 세부 정보를 고객에게 전달합니다.
-
원격 AS2 서버는 복호화되고 확인된 파일을 파트너 관리자가 사용할 수 있도록 합니다.
AS2 처리는 일반적인 사용 사례와 기존 AS2지원 서버 구현과의 통합에 중점을 두고 많은 RFC4130 프로토콜을 지원합니다. 지원되는 구성에 대한 자세한 설명은 AS2 지원되는 구성 섹션을 참조하세요.
AS2 메시지 수신 프로세스
인바운드 프로세스는 AWS Transfer Family 서버로 전송되는 메시지 또는 파일로 정의됩니다. 인바운드 메시지의 순서는 다음과 같습니다.
관리자 또는 자동 프로세스는 파트너의 원격 AS2 서버에서 AS2 파일 전송을 시작합니다.
파트너의 원격 AS2 서버가 파일 콘텐츠에 서명하고 암호화한 다음 Transfer Family에서 호스팅되는 AS2 인바운드 엔드포인트로 HTTP POST 요청을 보냅니다.
-
Transfer Family는 서버, 파트너, 인증서 및 계약에 대해 구성된 값을 사용하여 AS2페이로드를 복호화하고 확인합니다. 파일 콘텐츠는 구성된 Amazon S3 파일 스토어에 저장됩니다.
-
서명된 MDN 응답은 HTTP 응답과 인라인으로 반환되거나 별도의 HTTP POST 요청을 통해 원래 서버로 비동기적으로 반환됩니다.
감사 추적은 교환에 대한 세부 정보와 CloudWatch 함께 Amazon에 작성됩니다.
암호가 복호화된 파일은
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개의 가용 영역을 지원할 수 있습니다.
-
서버와 동일한 지역에 엘라스틱 IP 주소를 최대 3개까지 할당하세요. 또는 자체 IP 주소 범위()를 가져오도록 선택할 수 있습니다BYOIP.
참고
엘라스틱 IP 주소 수는 서버 엔드포인트에서 사용하는 가용 영역 수와 일치해야 합니다.
Network Load Balancer 구성
에서 인터넷 연결 Network Load Balancer(NLB)를 설정합니다VPC.
Network Load Balancer를 생성하고 서버의 VPC 엔드포인트를 로드 밸런서의 대상으로 정의하려면
-
에서 Amazon Elastic Compute Cloud 콘솔을 엽니다https://console.aws.amazon.com/ec2/
. -
탐색 창에서, 로드 밸런서를 선택한 다음, 로드 밸런서 만들기를 선택합니다.
-
Network Load Balancer에서 [생성(Create)]을 선택합니다.
-
기본 구성 섹션에서 다음 정보를 입력합니다.
-
이름에 로드 밸런서를 설명하는 이름을 입력합니다.
-
체계에서 인터넷 연결 을 선택합니다.
-
IP address type(IP 주소 유형)에서 IPv4를 선택합니다.
-
-
네트워크 맵핑 섹션에서 다음 정보를 입력합니다.
-
에서 생성한 가상 프라이빗 클라우드(VPC)를 VPC선택합니다.
-
매핑에서 서버 엔드포인트와 함께 사용하는 VPC 것과 동일한 에서 사용할 수 있는 퍼블릭 서브넷과 연결된 가용 영역을 선택합니다.
-
각 서브넷의 IPv4 주소에서 할당한 탄력적 IP 주소 중 하나를 선택합니다.
-
-
리스너 및 라우팅 섹션에서 다음 정보를 입력합니다.
-
프로토콜에서 TLS을 선택합니다.
-
포트에서
5080
를 입력합니다. -
기본 작업, 대상 그룹 생성을 선택합니다. 새 대상 그룹을 만드는 세부 사항에 대한 자세한 내용은 대상 그룹 생성을 참조하세요.
대상 그룹을 생성한 후 기본 작업 필드에 해당 이름을 입력합니다.
-
-
보안 리스너 설정 섹션에서 기본 SSL/TLS 인증서 영역에서 인증서를 선택합니다.
-
로드 밸런서 생성을 선택하여 를 생성합니다NLB.
-
(옵션이지만 권장됨)Network Load Balancer의 액세스 로그에 설명된 대로 Network Load Balancer의 액세스 로그를 켜서 전체 감사 추적을 유지하세요.
에서 TLS 연결이 종료되므로 이 단계를 수행하는 것이 좋습니다NLB. 따라서 Transfer Family AS2 CloudWatch 로그 그룹에 반영되는 소스 IP 주소는 거래 파트너의 외부 IP 주소 대신 의 NLB프라이빗 IP 주소입니다.
로드 밸런서를 설정하고 나면 클라이언트는 사용자 지정 포트 리스너를 통해 로드 밸런서와 통신합니다. 그러면 로드 밸런서가 포트 5080을 통해 서버와 통신합니다.
대상 그룹 생성
-
이전 절차에서 대상 그룹 만들기를 선택하면 새 대상 그룹에 대한 그룹 세부 정보 지정 페이지로 이동합니다.
-
기본 구성 섹션에서, 다음 정보를 입력합니다.
-
대상 타입 선택에서 IP 주소를 선택합니다.
-
대상 그룹 이름에 대상 그룹의 이름을 입력합니다.
-
프로토콜에서 TCP을 선택합니다.
-
포트에서
5080
를 입력합니다. -
IP address type(IP 주소 유형)에서 IPv4를 선택합니다.
-
에서 Transfer Family AS2 서버에 대해 VPC 생성한 를 VPC선택합니다.
-
-
상태 확인 섹션에서 상태 확인 프로토콜 TCP을 선택합니다.
-
Next(다음)를 선택합니다.
-
대상 등록 페이지에서 다음 정보를 입력합니다.
-
네트워크 의 경우 Transfer Family AS2 서버에 대해 VPC 생성한 이 지정되어 있는지 확인합니다.
-
IPv4 주소 에 Transfer Family AS2 서버 엔드포인트의 프라이빗 IPv4 주소를 입력합니다.
서버에 엔드포인트가 두 개 이상 있는 경우 IPv4 주소 추가를 선택하여 다른 IPv4 주소를 입력할 다른 행을 추가합니다. 모든 서버 엔드포인트의 사설 IP 주소를 입력할 때까지 이 프로세스를 반복합니다.
-
Ports가
5080
로 설정되어 있는지 확인하세요. -
아래 보류 중인 항목으로 포함을 선택하여 항목을 대상 검토 섹션에 추가하세요.
-
-
대상 검토 섹션에서 IP 대상을 검토하세요.
-
대상 그룹 생성을 선택한 다음 이전 절차로 돌아가 를 생성하고 표시된 새 대상 그룹을 NLB 입력합니다.
탄력적 IP 주소에서 서버 액세스 테스트
탄력적 IP 주소 또는 Network Load Balancer 의 DNS 이름을 사용하여 사용자 지정 포트를 통해 서버에 연결합니다.
중요
로드 밸런서에 구성된 서브넷의 네트워크 액세스 제어 목록(네트워크 ACLs)을 사용하여 클라이언트 IP 주소에서 서버에 대한 액세스를 관리합니다. 네트워크 ACL 권한은 서브넷 수준에서 설정되므로 규칙은 서브넷을 사용하는 모든 리소스에 적용됩니다. 로드 밸런서의 대상 타입이 인스턴스가 아닌IP 주소 로 설정되어 있기 때문에 보안 그룹을 사용하여 클라이언트 IP 주소에서의액세스를 제어할 수 없습니다. 따라서 로드 밸런서는 원본 IP 주소를 보존하지 않습니다. Network Load Balancer의 상태 확인이 실패하면 로드 밸런서가 서버 엔드포인트에 연결할 수 없다는 의미입니다. 이 문제를 해결하려면 다음을 확인 하세요.
-
서버 엔드포인트의 관련 보안 그룹
이 로드 밸런서에 구성된 서브넷으로부터의 인바운드 연결을 허용하는지 확인하세요. 로드 밸런서는 포트 5080을 통해 서버 엔드포인트에 연결할 수 있어야 합니다. -
서버 상태가 온라인인지 확인합니다.
AS2 커넥터를 사용하여 파일 전송
AS2 커넥터는 Transfer Family 서버에서 파트너 소유 외부 대상으로 AS2 메시지를 전송하기 위해 거래 파트너 간에 관계를 설정합니다.
Transfer Family를 사용하여 다음 start-file-transfer
AWS Command Line Interface (AWS CLI) 명령에 설명된 대로 커넥터 ID와 파일 경로를 참조하여 AS2 메시지를 보낼 수 있습니다.
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
명령은 커넥터의 커넥터 IDsURLs, 및 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
. -
전송된 파일은
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
라는 인바운드 파일이 있는 경우 다음 파일이 생성됩니다.-
File –
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가 파일 이름에 추가된다는 차이점이 있습니다. 전송 ID는 StartFileTransfer
API 작업에 의해 반환됩니다(또는 다른 프로세스 또는 스크립트가 이 작업을 호출할 때).
-
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 로그에 로깅할 수 있는 모든 상태 코드가 나열되어 있습니다. 다양한 메시지 처리 단계는 다양한 메시지 유형에 적용되며 모니터링 전용입니다. 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" }