기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
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 서버가 파일 내용에 서명하고 암호화한 다음 Transfer Family에서 호스팅되는 AS2 인바운드 엔드포인트에 HTTP POST 요청을 보냅니다.
-
Transfer Family는 서버, 파트너, 인증서 및 계약에 대해 구성된 값을 사용하여 AS2 페이로드를 복호화하고 확인합니다. 파일 콘텐츠는 구성된 Amazon S3 파일 스토어에 저장됩니다.
-
서명된 MDN 응답은 HTTP 응답과 함께 인라인으로 반환되거나 별도의 HTTP POST 요청을 통해 비동기적으로 소스 서버로 반환됩니다.
-
감사 추적은 거래소에 대한 세부 정보와 함께 Amazon CloudWatch에 작성됩니다.
-
암호가 복호화된 파일은
inbox/processed
라는 폴더에서 사용할 수 있습니다.

HTTPS를 통한 AS2 메시지 전송 및 수신
이 섹션에서는 AS2 프로토콜을 사용하여 HTTPS를 통해 메시지를 보내고 받는 Transfer Family 서버를 구성하는 방법에 대해 설명합니다.
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는 Transfer Family 서버 AWS 리전 와 동일한에 있어야 합니다.
-
VPC의 서브넷은 서버를 사용하려는 가용 영역 내에 있어야 합니다.
참고
각 Transfer Family 서버는 최대 3개의 가용 영역을 지원할 수 있습니다.
-
서버와 동일한 지역에 엘라스틱 IP 주소를 최대 3개까지 할당하세요. 또는 고유한 IP 주소 범위 (BYOIP) 를 가져오도록 선택할 수 있습니다.
참고
엘라스틱 IP 주소 수는 서버 엔드포인트에서 사용하는 가용 영역 수와 일치해야 합니다.
Network Load Balance(NLB) 또는 Application Load Balancer(ALB)를 구성할 수 있습니다. 다음 표에는 각 접근 방식에 대한 장단점이 나열되어 있습니다.
아래 표에는 NLB와 ALB를 사용하여 TLS를 종료할 때의 기능 차이점이 나와 있습니다.
Feature | Network Load Balancer(NLB) | Application Load Balancer(ALB) |
---|---|---|
지연 시간 | 네트워크 계층에서 작동할 때 지연 시간이 줄어듭니다. | 애플리케이션 계층에서 작동할 때 지연 시간이 더 깁니다. |
고정 IP 지원 | 정적일 수 있는 탄력적 IP 주소를 연결할 수 있습니다. | 탄력적 IP 주소를 연결할 수 없음:는 기본 IP 주소가 변경될 수 있는 도메인을 제공합니다. |
고급 라우팅 | 고급 라우팅을 지원하지 않습니다. | 고급 라우팅을 지원합니다. 암호화 없이 AS2에 필요한 이 헤더는 developer.mozilla.org |
TLS/SSL 종료 | TLS/SSL 종료 지원 | TLS/SSL 종료 지원 |
상호 TLS(mTLS) | Transfer Family는 현재 mTLS용 NLB 사용을 지원하지 않습니다. | mTLS 지원 |
로드 밸런서를 설정하고 나면 클라이언트는 사용자 지정 포트 리스너를 통해 로드 밸런서와 통신합니다. 그러면 로드 밸런서가 포트 5080을 통해 서버와 통신합니다.
대상 그룹 생성
-
이전 절차에서 대상 그룹 만들기를 선택하면 새 대상 그룹에 대한 그룹 세부 정보 지정 페이지로 이동합니다.
-
기본 구성 섹션에서, 다음 정보를 입력합니다.
-
대상 타입 선택에서 IP 주소를 선택합니다.
-
대상 그룹 이름에 대상 그룹의 이름을 입력합니다.
-
프로토콜의 경우 선택은 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 주소를 입력할 때까지 이 프로세스를 반복합니다.
-
Ports가
5080
로 설정되어 있는지 확인하세요. -
아래 보류 중인 항목으로 포함을 선택하여 항목을 대상 검토 섹션에 추가하세요.
-
-
대상 검토 섹션에서 IP 대상을 검토하세요.
-
대상 그룹 생성을 선택한 다음 이전 NLB 생성 절차로 돌아가 표시된 위치에 새 대상 그룹을 입력합니다.
탄력적 IP 주소에서 서버 액세스 테스트
Network Load Balancer의 엘라스틱 IP 주소 또는 DNS 이름을 사용하여 사용자 지정 포트를 통해 서버에 연결합니다.
중요
로드 밸런서에 구성된 서브넷의 네트워크 액세스 제어 목록(네트워크 ACL)를 사용하여 클라이언트 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 "/amzn-s3-demo-source-bucket/myfile1.txt
" "/amzn-s3-demo-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, 역할, 프로필, 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 서버로 전송합니다.
-
프로세스는 HTTP 응답(동기 MDN)과 함께 서명된 MDN 응답을 반환합니다.
-
파일이 여러 전송 단계 사이를 이동할 때 프로세스는 MDN 응답 수신 및 처리 세부 정보를 고객에게 전달합니다.
-
원격 AS2 서버는 복호화되고 검증된 파일을 파트너 관리자가 사용할 수 있도록 합니다.

AS2 처리는 일반적인 사용 사례 및 기존 AS2 지원 서버 구현과의 통합에 중점을 두고 많은 RFC 4130 프로토콜을 지원합니다. 지원되는 구성에 대한 자세한 설명은 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
라는 인바운드 파일이 있는 경우 다음 파일이 생성됩니다.-
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
/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이 전송되는 경우가 포함됩니다. | 예 |
FAILED | 메시지 처리에 실패했습니다. 오류 코드 목록은 섹션을 참조하세요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" }