

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# AS2 구성 설정
<a name="as2-example-tutorial"></a>

이 자습서에서는를 사용하여 적용성 문 2(AS2) 구성을 설정하는 방법을 안내합니다 AWS Transfer Family. 여기에 설명된 단계를 완료하면 샘플 거래 파트너(sample trading partner)의 AS2 메시지를 수락할 준비가 된 AS2 지원 서버를 갖게 됩니다. 샘플 거래 파트너에게 AS2 메시지를 보내는 데 사용할 수 있는 커넥터도 있습니다.

**참고**  
예제 설정의 일부에서는 AWS Command Line Interface ()를 사용합니다AWS CLI. 아직를 설치하지 않은 경우 *AWS Command Line Interface 사용 설명서*의 [의 최신 버전 설치 또는 업데이트를 AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html) AWS CLI참조하세요.



1. 사용자 자신과 사용자의 거래 파트너를 위한 인증서를 만듭니다. 사용할 수 있는 기존 인증서가 있다면 이 단원을 건너뛰어도 됩니다.

   이 과정은 [1단계: AS2용 인증서 생성](#as2-create-certs)에 설명되어 있습니다.

1. 1단계에서 생성한 인증서를 가져옵니다.

   이 과정은 [2단계: 인증서를 Transfer Family 인증서 리소스로 가져오기](#as2-import-certs-example)에 설명되어 있습니다.

1. 거래 파트너를 설정하려면 로컬 프로필과 파트너 프로필을 생성하세요.

   이 과정은 [3단계: 사용자와 거래 파트너를 위한 프로필 생성](#as2-create-profiles-example)에 설명되어 있습니다.

1. AS2 프로토콜을 사용하는 AWS Transfer Family 서버를 생성합니다. 선택적으로 서버에 탄력적 IP 주소를 추가하여 인터넷에 연결되도록 할 수 있습니다.

   이 과정은 [4단계: AS2 프로토콜을 사용하는 Transfer Family 서버 생성](#as2-example-server)에 설명되어 있습니다.
**참고**  
인바운드 전송에만 사용할 Transfer Family 서버를 생성해야 합니다. 아웃바운드 전송만 수행하는 경우에는 Transfer Family 서버가 필요하지 않습니다.

1. 거래 파트너와 계약을 체결합니다.

   이 과정은 [5단계: 사용자와 사용자의 파트너 간의 계약서 작성](#as2-create-agreement-example)에 설명되어 있습니다.
**참고**  
인바운드 전송에 대한 계약만 작성해야 합니다. 아웃바운드 전송만 수행하는 경우에는 계약이 필요하지 않습니다.

1. 사용자와 사용자의 거래 파트너와 계약을 체결합니다.

   이 과정은 [6단계: 사용자와 사용자의 거래 파트너 간의 커넥터를 생성합니다.](#as2-create-connector-example)에 설명되어 있습니다.
**참고**  
아웃바운드 전송 전용 커넥터를 생성해야 합니다. 인바운드 전송만 수행하는 경우 커넥터가 필요하지 않습니다.

1. AS2 파일 교환을 테스트해 보세요.

   이 과정은 [7단계: Transfer Family를 사용하여 AS2를 통한 파일 교환 테스트](#as2-test-config)에 설명되어 있습니다.

이 단계를 완료한 후 다음을 수행할 수 있습니다.
+ Transfer Family`start-file-transfer` AWS Command Line Interface (AWS CLI) 명령을 사용하여 원격 AS2-enabled 파트너 서버로 파일을 전송합니다.
+ Virtual Private Cloud(VPC) 엔드포인트를 통해 포트 5080에서 원격 AS2 지원 파트너 서버로부터 파일을 수신합니다.



## 1단계: AS2용 인증서 생성
<a name="as2-create-certs"></a>

AS2 거래소의 양 당사자는 모두 X.509 인증서가 필요합니다. 원하는 방식으로 이러한 인증서를 생성할 수 있습니다. 이 주제에서는 명령줄에서 [OpenSSL](https://www.openssl.org/)을 사용하여 루트 인증서를 만든 다음 하위 인증서에 서명하는 방법을 설명합니다. 양 당사자는 자체 인증서를 생성해야 합니다.

**참고**  
AS2 인증서의 키 길이는 최소 2,048비트, 최대 4,096비트여야 합니다.

파트너와 파일을 전송하려면 다음 사항에 유의하세요.
+ 프로필에 인증서를 첨부할 수 있습니다. 인증서에는 퍼블릭 키 또는 프라이빗 키가 포함됩니다.
+ 사용자의 거래 파트너가 사용자에게 퍼블릭 키를 보내면, 사용자는 그에게 사용자의 퍼블릭 키를 보냅니다.
+ 거래 파트너는 퍼블릭 키로 메시지를 암호화하고 프라이빗 키로 서명합니다. 정반대로, 사용자는 거래 파트너의 퍼블릭 키로 메시지를 암호화하고 그 메시지에 사용자 프라이빗 키로 서명합니다.
**참고**  
GUI로 키를 관리하려는 경우, 사용할 수 있는 옵션 중 하나가 [http://portecle.sourceforge.net/](http://portecle.sourceforge.net/)입니다.

**예 인증서를 생성하려면**
**중요**  
**파트너에게 사용자 프라이빗 키를 보내지 마세요.** 이 예시에서, 사용자는 한 당사자를 위해 자체 서명된 퍼블릭 키와 프라이빗 키 세트를 생성합니다. 테스트 목적으로 두 거래 파트너 역할을 모두 수행하려는 경우 이 지침을 반복하여 거래 파트너당 하나씩 총 두 세트의 키를 생성할 수 있습니다. 이 경우 두 개의 루트 인증 기관(CA)을 생성할 필요가 없습니다.

1. 다음 명령을 실행하여 2,048비트 길이의 모듈러스가 포함된 RSA 프라이빗 키를 생성합니다.

   ```
   /usr/bin/openssl genrsa -out root-ca-key.pem 2048
   ```

1. 다음 명령을 실행하여 사용자의 `root-ca-key.pem`파일로 자체 서명된 인증서를 생성합니다.

   ```
   /usr/bin/openssl req \
   -x509 -new -nodes -sha256 \
   -days 1825 \
   -subj "/C=US/ST=MA/L=Boston/O=TransferFamilyCustomer/OU=IT-dept/CN=ROOTCA" \
   -key root-ca-key.pem \
   -out root-ca.pem
   ```

   `-subj` 아규먼트는 다음 두 값으로 구성됩니다.

     
****    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/transfer/latest/userguide/as2-example-tutorial.html)

1. 로컬 프로필을 위한 서명 키와 암호화 키를 생성하세요.

   ```
   /usr/bin/openssl genrsa -out signing-key.pem 2048
   /usr/bin/openssl genrsa -out encryption-key.pem 2048
   ```
**참고**  
OpenAS2와 같은 일부 AS2 지원 서버에서는 서명과 암호화 모두에 동일한 인증서를 사용해야 합니다. 이 경우 두 가지 용도로 동일한 프라이빗 키와 인증서를 가져올 수 있습니다. 이렇게 하려면 이전 명령 두 개 대신 다음 명령을 실행합니다.  

   ```
   /usr/bin/openssl genrsa -out signing-and-encryption-key.pem 2048
   ```

1. 다음 명령을 실행하여 루크 키를 위한 인증서 서명 요청(CSR)을 생성하여 서명합니다.

   ```
   /usr/bin/openssl req -new -key signing-key.pem -subj \
   "/C=US/ST=MA/L=Boston/O=TransferFamilyCustomer/OU=IT-dept/CN=Signer" -out signing-key-csr.pem
   ```

   ```
   /usr/bin/openssl req -new -key encryption-key.pem -subj \
   "/C=US/ST=MA/L=Boston/O=TransferFamilyCustomer/OU=IT-dept/CN=Encrypter" -out encryption-key-csr.pem
   ```

1. 다음으로, `signing-cert.conf` 파일과 `encryption-cert.conf` 파일을 만들어야 합니다.
   + 텍스트 편집기를 사용하여 다음 내용을 포함하는 `signing-cert.conf` 파일을 생성합니다.

     ```
     authorityKeyIdentifier=keyid,issuer
     keyUsage = digitalSignature, nonRepudiation
     ```
   + 텍스트 편집기를 사용하여 다음 내용을 포함하는 `encryption-cert.conf` 파일을 생성합니다.

     ```
     authorityKeyIdentifier=keyid,issuer
     keyUsage = dataEncipherment
     ```

1. 마지막으로 다음 명령을 실행하여 서명된 인증서를 생성합니다.

   ```
   /usr/bin/openssl x509 -req -sha256 -CAcreateserial -days 1825 -in signing-key-csr.pem -out signing-cert.pem -CA \
   root-ca.pem -CAkey root-ca-key.pem -extfile signing-cert.conf
   ```

   ```
   /usr/bin/openssl x509 -req -sha256 -CAcreateserial -days 1825 -in encryption-key-csr.pem -out encryption-cert.pem \
   -CA root-ca.pem -CAkey root-ca-key.pem -extfile encryption-cert.conf
   ```

## 2단계: 인증서를 Transfer Family 인증서 리소스로 가져오기
<a name="as2-import-certs-example"></a>

이 절차에서는 AWS CLI를 사용하여 인증서를 가져오는 방법을 설명합니다. 이 방법 대신 Transfer Family 콘솔을 사용하려면 [AS2 인증서 가져오기](managing-as2-partners.md#configure-as2-certificate) 섹션을 참조하세요.

1단계에서 만든 서명 및 암호화 인증서를 가져오려면 다음 `import-certificate` 명령을 실행합니다. 암호화와 서명에 동일한 인증서를 사용하는 경우 동일한 인증서를 두 번 가져오세요 (한 번은 `SIGNING` 사용량과 함께, 다른 한 번은 `ENCRYPTION` 사용량과 함께).

**참고**  
 인증서와 해당 체인이 모두 포함된 파일이 있는 경우 `certificate` 파라미터만 사용하여 해당 파일을 `import-certificate` 명령에 제공할 수 있습니다. 예제:  

```
aws transfer import-certificate --usage ENCRYPTION --certificate file://combined-cert-and-chain-file.pem
```
`certificate` 파라미터를 사용하여 인증서와 해당 체인을 모두 업로드하는 경우 `certificate-chain` 파라미터를 사용하지 마십시오.  
인증서와 체인을 결합하면 키는 64자마다 줄 바꿈 "\$1n"이 포함된 기존 PEM 표준을 사용하여 형식이 지정됩니다. 저장된 인증서는 업로드한 인증서와 기능적으로 동일하며,를 통한 `DescribeCertificate` 응답 AWS CLI 에는 이러한 줄 바꿈 문자가 포함됩니다.

```
aws transfer import-certificate --usage SIGNING --certificate file://signing-cert.pem \
            --private-key file://signing-key.pem --certificate-chain file://root-ca.pem
```

이 명령은 사용자 서명 `CertificateId`을 반환합니다. 다음 섹션에서는 이 인증서 ID를 `my-signing-cert-id`라고 합니다.

```
aws transfer import-certificate --usage ENCRYPTION --certificate file://encryption-cert.pem \
            --private-key file://encryption-key.pem --certificate-chain file://root-ca.pem
```

이 명령은 암호화 `CertificateId`를 반환합니다. 다음 섹션에서는 이 인증서 ID를 `my-encrypt-cert-id`라고 합니다.

그런 다음, 다음 명령을 실행하여 파트너의 암호화 및 서명 인증서를 가져옵니다.

```
aws transfer import-certificate --usage ENCRYPTION --certificate file://partner-encryption-cert.pem \
--certificate-chain file://partner-root-ca.pem
```

이 명령은 파트너의 암호화 `CertificateId`를 반환합니다. 다음 섹션에서는 이 인증서 ID를 `partner-encrypt-cert-id`라고 합니다.

```
aws transfer import-certificate --usage SIGNING --certificate file://partner-signing-cert.pem \
--certificate-chain file://partner-root-ca.pem
```

이 명령은 파트너의 서명 `CertificateId`를 반환합니다. 다음 섹션에서는 이 인증서 ID를 `partner-signing-cert-id`라고 합니다.

## 3단계: 사용자와 거래 파트너를 위한 프로필 생성
<a name="as2-create-profiles-example"></a>

이 절차에서는를 사용하여 AS2 프로파일을 생성하는 방법을 설명합니다 AWS CLI. 이 방법 대신 Transfer Family 콘솔을 사용하려면 [AS2 프로필 생성](configure-as2-profile.md) 섹션을 참조하세요.

다음 명령을 실행하여 로컬 AS2 프로필을 생성합니다. 이 명령은 퍼블릭 키와 프라이빗 키가 포함된 인증서를 참조합니다.

```
aws transfer create-profile --as2-id MYCORP --profile-type LOCAL --certificate-ids \
my-signing-cert-id my-encrypt-cert-id
```

이 명령은 프로필 ID를 반환합니다. 다음 섹션에서는 이 ID를 `my-profile-id`라고 합니다.

이제 다음 명령을 실행하여 파트너 프로필을 생성합니다. 이 명령어는 파트너의 퍼블릭 키 인증서만 사용합니다. 이 명령을 사용하려면 `user input placeholders`를 사용자 자신(예: 파트너의 AS2 이름 및 인증서 ID)의 정보로 바꾸세요.

```
aws transfer create-profile --as2-id PARTNER-COMPANY --profile-type PARTNER --certificate-ids \
partner-signing-cert-id partner-encrypt-cert-id
```

이 명령은 파트너의 프로필 ID를 반환합니다. 다음 섹션에서는 이 ID를 `partner-profile-id`라고 합니다.

**참고**  
이전 명령에서 *MYCORP*를 조직 이름으로 바꾸고 *PARTNER-COMPANY*를 사용자의 거래 파트너의 조직 이름으로 바꾸세요.

## 4단계: AS2 프로토콜을 사용하는 Transfer Family 서버 생성
<a name="as2-example-server"></a>

이 절차에서는 Transfer Family AWS CLI를 사용하여 AS2 지원 서버를 생성하는 방법을 설명합니다. 

**참고**  
 많은 예 단계에서 파일에서 파라미터를 로드하는 명령을 사용합니다. 파일을 사용하여 파라미터를 로드하는 방법에 대한 자세한 내용은 [파일에서 파라미터를 로드하는 방법](https://docs.aws.amazon.com//cli/latest/userguide/cli-usage-parameters-file.html)을 참조하세요.

이 방법 대신 콘솔을 사용하려면 [Transfer Family 콘솔을 사용하여 AS2 서버 생성](create-as2-transfer-server.md#create-server-as2-console) 섹션을 참조하세요.

SFTP 또는 FTPS AWS Transfer Family 서버를 생성하는 방법과 마찬가지로 `create-server` AWS CLI 명령의 `--protocols AS2` 파라미터를 사용하여 AS2-enabled 서버를 생성합니다. 현재 Transfer Family는 VPC 엔드포인트 타입과 AS2 프로토콜을 사용하는 Amazon S3 스토리지만 지원합니다.

`create-server` 명령을 사용하여 Transfer Family용 AS2 지원 서버를 생성하면 VPC 엔드포인트가 자동으로 생성됩니다. 이 엔드포인트는 AS2 메시지를 받아들일 수 있도록 TCP 포트 5080을 노출합니다.

VPC 엔드포인트를 인터넷에 공개하려는 경우 탄력적 IP 주소를 VPC 엔드포인트와 연결할 수 있습니다.

이러한 지침을 사용하려면 다음이 필요합니다.
+ 사용자 VPC의 ID (예: **vpc-abcdef01**).
+ 사용자 VPC 서브넷의 ID (예: **서브넷-abcdef01**, **서브넷-서브넷-abcdef01**, **서브넷-021345ab**).
+ 거래 파트너로부터 TCP 포트 5080을 통해 들어오는 트래픽을 허용하는 보안 그룹의 ID 하나 이상 (예: **sg-1234567890abcdef0** 및 **sg-abcdef01234567890**)
+ (옵션) VPC 엔드포인트와 연결하려는 탄력적 IP 주소.
+ 거래 파트너가 VPN을 통해 VPC에 연결되지 않은 경우 인터넷 게이트웨이가 필요합니다. 자세한 내용은 *Amazon VPC 사용 설명서*의 [인터넷 게이트웨이를 사용한 인터넷 연결](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_Internet_Gateway.html)을 참조하세요.

**AS2 지원 서버를 만들려면**

1. 다음 명령을 실행합니다. 각 `user input placeholder`를 사용자의 정보로 바꿉니다.

   ```
   aws transfer create-server --endpoint-type VPC \
   --endpoint-details VpcId=vpc-abcdef01,SubnetIds=subnet-abcdef01,subnet-abcdef01,subnet-
   021345ab,SecurityGroupIds=sg-abcdef01234567890,sg-1234567890abcdef0 --protocols AS2 \
   --protocol-details As2Transports=HTTP
   ```

1. (옵션) VPC 엔드포인트를 퍼블릭으로 만들 수 있습니다. `update-server`작업을 통해서만 Transfer Family 서버에 탄력적 IP 주소를 연결할 수 있습니다. 다음 명령은 서버를 중지하고 탄력적 IP 주소로 업데이트한 다음 다시 시작합니다.

   ```
   aws transfer stop-server --server-id your-server-id
   ```

   ```
   aws transfer update-server --server-id your-server-id --endpoint-details \
   AddressAllocationIds=eipalloc-abcdef01234567890,eipalloc-1234567890abcdef0,eipalloc-abcd012345ccccccc
   ```

   ```
   aws transfer start-server --server-id your-server-id
   ```

   이 `start-server` 명령은 사용자 서버의 퍼블릭 IP 주소가 포함된 DNS 레코드를 자동으로 생성합니다. 거래 파트너에게 서버 액세스 권한을 부여하려면 거래 파트너에게 다음 정보를 제공해야 합니다. 이 경우에는 `your-region`는 귀하의 AWS 리전를 참조합니다.

   `s-your-server-id.server.transfer.your-region.amazonaws.com`

   거래 파트너에게 제공하는 전체 URL은 다음과 같습니다.

   `http://s-your-server-id.server.transfer.your-region.amazonaws.com:5080`

1. AS2 지원 서버의 액세스 가능 여부를 테스트하려면 다음 명령을 사용하세요. VPC 엔드포인트의 프라이빗 DNS 주소 또는 퍼블릭 엔드포인트(탄력적 IP 주소를 엔드포인트와 연결한 경우)를 통해 서버에 액세스할 수 있는지 확인하세요.

   서버가 올바르게 구성되어 있으면 연결이 성공합니다. 하지만 유효한 AS2 메시지를 보내고 있지 않기 때문에 HTTP 상태 코드 400(잘못된 요청) 응답을 받게 됩니다.
   + 퍼블릭 엔드포인트의 경우 (이전 단계에서 탄력적 IP 주소를 연결한 경우) 서버 ID와 지역을 대체하여 다음 명령을 실행합니다.

     ```
     curl -vv -X POST http://s-your-server-id.transfer.your-region.amazonaws.com:5080
     ```
   + VPC 내에서 연결하는 경우 다음 명령을 실행하여 VPC 엔드포인트의 프라이빗 DNS 이름을 조회합니다.

     ```
     aws transfer describe-server --server-id s-your-server-id
     ```

     이 `describe-server` 명령은 `VpcEndpointId` 파라미터에 VPC 엔드포인트 ID를 반환합니다. 이 값을 사용하여 다음 명령을 실행합니다.

     ```
     aws ec2 describe-vpc-endpoints --vpc-endpoint-ids vpce-your-vpc-endpoint-id
     ```

     이 `describe-vpc-endpoints` 명령은 `DNSEntries` 배열을 반환하며, 여기에는 여러 `DnsName` 파라미터가 포함됩니다. 다음 명령에서 지역 DNS 이름(가용 영역을 포함하지 않는 이름)을 사용합니다.

     ```
     curl -vv -X POST http://vpce-your-vpce.vpce-svc-your-vpce-svc.your-region.vpce.amazonaws.com:5080
     ```

     예를 들어, 다음 명령은 이전 명령의 자리 표시자에 대한 샘플 값을 보여줍니다.

     ```
     curl -vv -X POST http://vpce-0123456789abcdefg-fghij123.vpce-svc-11111aaaa2222bbbb.us-east-1.vpce.amazonaws.com:5080
     ```

1. (옵션) 로깅 역할을 구성합니다. Transfer Family는 구조화된 JSON 형식으로 송수신된 메시지의 상태를 Amazon CloudWatch Logs에 기록합니다. Transfer Family에게 계정의 CloudWatch 로그에 대한 액세스 권한을 제공하려면 서버에서 로깅 역할을 구성해야 합니다.

   를 신뢰하는 AWS Identity and Access Management (IAM) 역할을 생성하고 `AWSTransferLoggingAccess` 관리형 정책을 `transfer.amazonaws.com`연결합니다. 자세한 내용은 [IAM 역할 및 정책 생성](requirements-roles.md)을 참조하세요. 방금 생성한 IAM 역할의 Amazon 리소스 이름 (ARN) 을 메모하고 다음 `update-server` 명령을 실행하여 서버에 연결합니다.

   ```
   aws transfer update-server --server-id your-server-id --logging-role arn:aws:iam::your-account-id:role/logging-role-name
   ```
**참고**  
로깅 역할은 옵션이지만 메시지 상태를 확인하고 구성 문제를 해결할 수 있도록 로깅 역할을 설정하는 것이 좋습니다.

## 5단계: 사용자와 사용자의 파트너 간의 계약서 작성
<a name="as2-create-agreement-example"></a>

이 절차에서는 AWS CLI를 사용하여 AS2 계약서를 생성하는 방법에 대해 설명합니다. 이 방법 대신 Transfer Family 콘솔을 사용하려면 [AS2 계약 생성](create-as2-transfer-server.md#as2-agreements) 섹션을 참조하세요.

계약에는 두 프로필 (로컬 및 파트너), 인증서, 그리고 두 당사자 간의 인바운드 AS2 전송을 허용하는 서버 구성이 함께 제공됩니다. 다음 명령을 실행하여 항목을 나열할 수 있습니다.

```
aws transfer list-profiles --profile-type LOCAL
aws transfer list-profiles --profile-type PARTNER
aws transfer list-servers
```

이 단계에는 버킷에 대한 읽기/쓰기 액세스 권한이 있는 Amazon S3 버킷 및 IAM 역할이 필요합니다. 이 역할을 생성하는 지침은 Transfer Family SFTP, FTP 및 FTPS 프로토콜의 지침과 동일하며 [IAM 역할 및 정책 생성](requirements-roles.md)에서 확인할 수 있습니다.

계약을 생성하려면 다음 항목이 필요합니다.
+ AS2 파일을 저장할 Amazon S3 버킷 이름(및 지정된 경우 객체 접두사)입니다. 파일 유형에 따라 별도의 디렉터리를 지정하는 것이 좋습니다.
+ 버킷에 액세스할 수 있는 IAM 역할의 ARN입니다.
+ 사용자의 Transfer Family 서버 ID
+ 사용자의 프로필 ID 및 사용자 파트너의 프로필 ID

와 같은 파일에 다음 코드를 저장합니다`agreementDetails.json`. 각 `user input placeholder`를 사용자의 정보로 바꿉니다.

```
{
    "Description": "ExampleAgreementName",
    "ServerId": "your-server-id",
    "LocalProfileId": "your-profile-id",
    "PartnerProfileId": "your-partner-profile-id",
    "AccessRole": "arn:aws:iam::111111111111:role/TransferAS2AccessRole",
    "Status": "ACTIVE",    
    "PreserveFilename": "ENABLED",
    "EnforceMessageSigning": "ENABLED",
    "CustomDirectories": {
        "FailedFilesDirectory": "/amzn-s3-demo-destination-bucket/AS2-failed",
        "MdnFilesDirectory": "/amzn-s3-demo-destination-bucket/AS2-mdn",
        "PayloadFilesDirectory": "/amzn-s3-demo-destination-bucket/AS2-payload",
        "StatusFilesDirectory": "/amzn-s3-demo-destination-bucket/AS2-status",
        "TemporaryFilesDirectory": "/amzn-s3-demo-destination-bucket/AS2-temp"
    }
}
```

**참고**  
별도의 디렉터리 대신 단일 기본 디렉터리를 사용하려면 이전 코드에서 `CustomDirectories` 줄과 개별 디렉터리 줄을 제거하고 대신 다음 파라미터를 사용합니다.  
`"BaseDirectory": "/amzn-s3-demo-destination-bucket/AS2-inbox`"  
기본 디렉터리와 별도의 디렉터리 파라미터를 모두 사용하지 마십시오. 그렇지 않으면 명령이 실패합니다.

그리고 다음 명령을 실행합니다.

```
aws transfer create-agreement --cli-input-json file://agreementDetails.json
```

성공한 경우 계약의 ID가 반환됩니다. 그리고 다음 명령을 사용하여 계약의 세부 정보를 볼 수 있습니다.

```
aws transfer describe-agreement --agreement-id agreement-id --server-id your-server-id
```

## 6단계: 사용자와 사용자의 거래 파트너 간의 커넥터를 생성합니다.
<a name="as2-create-connector-example"></a>

이 절차에서는 AWS CLI를 사용하여 AS2 커넥터를 생성하는 방법에 대해 설명합니다. 이 방법 대신 Transfer Family 콘솔을 사용하려면 [AS2 커넥터 구성](configure-as2-connector.md) 섹션을 참조하세요.

`StartFileTransfer` API 작업을 사용하면 커넥터를 사용하여 Amazon S3에 저장된 파일을 거래 파트너의 AS2 엔드포인트로 전송할 수 있습니다. 다음 명령을 실행하여 이전에 생성한 프로필을 찾을 수 있습니다.

```
aws transfer list-profiles
```

커넥터를 생성할 때 파트너의 AS2 서버 URL을 제공해야 합니다. 다음 텍스트를 `testAS2Config.json`라는 파일에 복사합니다.

```
{
"Compression": "ZLIB",
"EncryptionAlgorithm": "AES256_CBC",
"LocalProfileId": "your-profile-id",
"MdnResponse": "SYNC",
"MdnSigningAlgorithm": "DEFAULT",
"MessageSubject": "Your Message Subject",
"PartnerProfileId": "partner-profile-id",
"PreserveContentType": "FALSE",
"SigningAlgorithm": "SHA256"
}
```

**참고**  
의 경우 `DES_EDE3_CBC` 알고리즘이 필요한 레거시 클라이언트를 지원해야 하는 경우가 아니면 알고리즘을 지정하지 `EncryptionAlgorithm`마십시오. 취약한 암호화 알고리즘이기 때문입니다.

이제 다음 명령을 실행하여 커넥터를 생성합니다.

```
aws transfer create-connector --url "http://partner-as2-server-url" \
--access-role your-IAM-role-for-bucket-access \
--logging-role arn:aws:iam::your-account-id:role/service-role/AWSTransferLoggingAccess \
--as2-config file:///path/to/testAS2Config.json
```

## 7단계: Transfer Family를 사용하여 AS2를 통한 파일 교환 테스트
<a name="as2-test-config"></a>

### 거래 파트너로부터 파일 받기
<a name="as2-receive-file"></a>

퍼블릭 탄력적 IP 주소를 VPC 엔드포인트와 연결한 경우 Transfer Family는 퍼블릭 IP 주소를 포함하는 DNS 이름을 자동으로 생성합니다. 하위 도메인은 AWS Transfer Family 서버 ID( 형식)입니다`s-1234567890abcdef0`. 거래 파트너에게 다음과 같은 형식으로 서버 URL을 입력합니다.

```
http://s-1234567890abcdef0.server.transfer.us-east-1.amazonaws.com:5080
```

퍼블릭 탄력적 IP 주소를 VPC 엔드포인트와 연결하지 않은 경우, 포트 5080에서 거래 파트너가 보내는 HTTP POST를 통해 AS2 메시지를 받아들일 수 있는 VPC 엔드포인트의 호스트 이름을 찾아보세요. VPC 엔드포인트 세부 정보를 검색하려면 다음 명령을 사용합니다.

```
aws transfer describe-server --server-id s-1234567890abcdef0
```

예를 들어 위의 명령이 `vpce-1234abcd5678efghi`의 VPC 엔드포인트 ID를 반환한다고 가정해 보겠습니다. 그런 다음, 다음 명령을 사용하여 DNS 이름을 검색합니다.

```
aws ec2 describe-vpc-endpoints --vpc-endpoint-ids vpce-1234abcd5678efghi
```

이 명령은 다음 명령을 실행하는 데 필요한 VPC 엔드포인트의 모든 세부 정보를 반환합니다.

DNS 이름은 `DnsEntries` 배열에 나열됩니다. 거래 파트너가 VPC 내에 있어야 VPC 엔드포인트에 액세스할 수 있습니다(예: AWS PrivateLink 또는 VPN을 통해). 거래 파트너에게 다음과 같은 형식으로 서버 VPC 엔드포인트 URL을 제공합니다.

```
http://vpce-your-vpce-id.vpce-svc-your-vpce-svc-id.your-region.vpce.amazonaws.com:5080
```

예를 들어, 다음 URL은 이전 명령의 자리 표시자에 대한 샘플 값을 보여줍니다.

```
http://vpce-0123456789abcdefg-fghij123.vpce-svc-11111aaaa2222bbbb.us-east-1.vpce.amazonaws.com:5080
```

이 예에서 성공적인 전송은 지정한 `base-directory` 파라미터에 [5단계: 사용자와 사용자의 파트너 간의 계약서 작성](#as2-create-agreement-example)의 지정된 위치에 저장됩니다. 이름이 `myfile1.txt` 및 `myfile2.txt` 인 파일이 성공적으로 수신되면 파일은 `/path-defined-in-the-agreement/processed/original_filename.messageId.original_extension`로 저장됩니다. 여기서 파일은 `/amzn-s3-demo-destination-bucket/AS2-inbox/processed/myfile1.messageId.txt` 및 로 `/amzn-s3-demo-destination-bucket/AS2-inbox/processed/myfile2.messageId.txt`저장됩니다.

Transfer Family 서버를 생성할 때 로깅 역할을 구성한 경우 CloudWatch 로그에서 AS2 메시지 상태를 확인할 수도 있습니다.

### 거래 파트너에게 파일을 보내세요.
<a name="as2-send-file"></a>

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 파일을 보면 파트너가 파일을 성공적으로 수신했는지 확인할 수 있습니다. 이러한 파일 이름은 [파일 이름 및 위치](send-as2-messages.md#file-names-as2)에 설명된 규칙에 따라 지정됩니다. 커넥터를 생성할 때 로깅 역할을 구성한 경우, CloudWatch 로그에서 AS2 메시지 상태를 확인할 수도 있습니다.