

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

# AWS Transfer Family AS2용
<a name="as2-for-transfer-family"></a>

적용성 보고서 2(AS2)는 강력한 메시지 보호 및 검증 메커니즘을 포함하는 RFC 정의 파일 전송 사양입니다. 전송 중 AS2 페이로드를 보호하려면 암호화 및 디지털 서명과 함께 암호화 메시지 구문(CMS)을 사용하여 데이터 보호 및 피어 인증을 제공합니다. 서명된 메시지 처리 알림(MDN) 응답 페이로드는 메시지가 수신되고 성공적으로 복호화되었다는 확인(부인 방지)을 제공합니다.

AS2 프로토콜은 프로토콜에 데이터 보호 및 보안 기능을 내장하는 데 의존하는 규정 준수 요구 사항이 있는 워크플로에 매우 중요합니다. AWS Transfer Family AS2 엔드포인트는 [Drummond 인증을](https://aws.amazon.com/about-aws/whats-new/2023/06/aws-transfer-family-drummond-group-as2-certification/) 받았으며, 소매, 생명과학, 제조, 금융 서비스 및 유틸리티와 같은 산업의 고객이 비즈니스 파트너와 안전하게 거래할 수 있도록 지원합니다.

Transfer Family와 함께 AS2를 사용하는 경우 트랜잭션된 데이터는 다음을 위해에서 AWS 기본적으로 액세스할 수 있습니다.
+ 처리, 분석 및 기계 학습
+ 엔터프라이즈 리소스 계획(ERP) 시스템과의 통합
+ 고객 관계 관리(CRM) 시스템과의 통합

AS2-enabled 서버가 있는 파트너와 파일을 교환하려면 다음을 수행해야 합니다.
+ 암호화를 위한 퍼블릭-프라이빗 키 페어 생성
+ 서명을 위한 퍼블릭-프라이빗 키 페어 생성
+ 파트너와 퍼블릭 키 교환

**중요**  
HTTPS AS2 서버 엔드포인트는 현재 지원되지 않습니다. TLS 종료에 대한 책임은 사용자에게 있습니다.

Transfer Family는 AS2가 활성화된 Transfer Family 엔드포인트와 Transfer Family AS2 커넥터를 구성할 수 있는 워크숍을 제공합니다. 이 워크숍의 세부 정보는 [여기](https://catalog.workshops.aws/transfer-family-as2/en-US)에서 확인할 수 있습니다.

Transfer Family에서 AS2를 구성하는 step-by-step 지침은 다음을 참조하세요.

1. [AS2 인증서 가져오기](managing-as2-partners.md#configure-as2-certificate)

1. [AS2 프로필 생성](configure-as2-profile.md)

1. [AS2 서버 생성](create-as2-transfer-server.md)

1. [AS2 계약 생성](create-as2-transfer-server.md#as2-agreements)

1. [AS2 커넥터 구성](configure-as2-connector.md)

전체 예제는 섹션을 참조하세요[AS2 구성 설정](as2-example-tutorial.md).

**참고**  
AS2 Terraform 템플릿에 대한 지원을 표시하려면 [Transfer Family Terraform 템플릿 기능 요청에](https://github.com/aws-ia/terraform-aws-transfer-family/issues/62#issue-3364703944) 썸업 반응(👍)을 추가합니다. 사용 사례를 설명하는 설명을 추가할 수도 있습니다.

## AS2 사용 사례
<a name="as2-use-cases"></a>

AS2-enabled 서버가 있는 파트너와 파일을 교환하려는 AWS Transfer Family 고객인 경우 설정의 가장 복잡한 부분은 암호화를 위한 퍼블릭-프라이빗 키 페어 하나와 파트너와 퍼블릭 키를 서명하고 교환하기 위한 퍼블릭-프라이빗 키 페어 하나를 생성하는 것입니다.

![\[암호화와 서명을 위한 퍼블릭-프라이빗 키 쌍을 사용하는 방법을 보여 주는 다이어그램입니다.\]](http://docs.aws.amazon.com/ko_kr/transfer/latest/userguide/images/as2-architecture-high-level.png)


AS2와 AWS Transfer Family 함께를 사용하려면 다음과 같은 변형을 고려하세요.

**참고**  
*거래 파트너는* 해당 파트너 프로필과 연결된 파트너입니다.  
다음 표의 *MDN에* 대한 모든 언급은 *서명된* MDN을 가정합니다.


**AS2 사용 사례**  

|  | 
| --- |
|  인바운드 전용 사용 사례 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/transfer/latest/userguide/as2-for-transfer-family.html)  | 
|  아웃바운드 전용 사용 사례 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/transfer/latest/userguide/as2-for-transfer-family.html)  | 
|  인바운드 및 아웃바운드 사용 사례 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/transfer/latest/userguide/as2-for-transfer-family.html)  | 

## AS2 CloudFormation 템플릿
<a name="as2-templates-section"></a>

이 주제에서는 AS2 서버 및 구성을 빠르게 배포하는 데 사용할 수 있는 AWS CloudFormation 템플릿에 대한 정보를 제공합니다 AWS Transfer Family. 이러한 템플릿은 설정 프로세스를 자동화하고 AS2 파일 전송에 대한 모범 사례를 구현하는 데 도움이 됩니다.
+ 기본 AS2 템플릿은에 설명되어 있습니다. [템플릿을 사용하여 데모 Transfer Family AS2 스택을 생성하세요.](create-as2-transfer-server.md#as2-cfn-demo-template) 
+ HTTP 헤더를 사용자 지정하기 위한 AS2 템플릿은에 설명되어 있습니다[AS2 메시지에 대한 HTTP 헤더 사용자 지정](as2-custom-http-headers.md).

### AS2 템플릿 사용자 지정
<a name="as2-template-customization"></a>

제공된 템플릿을 특정 요구 사항에 맞게 사용자 지정할 수 있습니다.

1. S3 URL에서 템플릿을 다운로드합니다.

1. YAML 코드를 수정하여 다음과 같은 구성을 조정합니다.
   + 보안 설정 및 인증서 구성
   + 네트워크 아키텍처 및 VPC 설정
   + 스토리지 옵션 및 파일 처리
   + 모니터링 및 알림 기본 설정

1. 수정된 템플릿을 자체 S3 버킷에 업로드합니다.

1.  CloudFormation 콘솔 또는를 사용하여 사용자 지정 템플릿을 배포합니다 AWS CLI.

**중요**  
템플릿을 사용자 지정할 때 리소스 간의 종속성을 유지하고 보안 모범 사례를 따르십시오.

### AS2 배포 테스트
<a name="as2-template-testing"></a>

템플릿을 사용하여 AS2 서버를 배포한 후 구성을 테스트할 수 있습니다.

1. CloudFormation 스택 출력에서 샘플 명령 및 엔드포인트 정보를 확인합니다.

1.  AWS CLI 를 사용하여 테스트 파일을 전송합니다.

   ```
   aws s3api put-object --bucket your-bucket-name --key test.txt --body test.txt
   aws transfer start-file-transfer --connector-id your-connector-id --send-file-paths /your-bucket-name/test.txt
   ```

1. 대상 S3 버킷에서 파일 전송을 확인합니다.

1. CloudWatch 로그에서 성공적인 처리 및 MDN 응답을 확인합니다.

보다 포괄적인 테스트를 위해 타사 AS2 클라이언트를 사용하여 Transfer Family AS2 서버로 파일을 전송하는 것이 좋습니다.

### AS2 템플릿 배포 모범 사례
<a name="as2-template-best-practices"></a>

AS2 CloudFormation 템플릿을 사용할 때는 다음 모범 사례를 따르세요.

보안  
강력한 인증서를 사용하고 정기적으로 교체합니다.  
최소 권한 IAM 정책을 구현합니다.  
보안 그룹을 사용하여 네트워크 액세스를 제한합니다.

신뢰성  
여러 가용 영역에 배포합니다.  
전송 실패에 대한 모니터링 및 알림을 구현합니다.  
전송 실패에 대한 자동 재시도를 설정합니다.

성능  
전송 볼륨에 적합한 인스턴스 유형을 선택합니다.  
효율적인 파일 관리를 위해 S3 수명 주기 정책을 구현합니다.  
네트워크 구성을 모니터링하고 최적화합니다.

비용 최적화  
가변 워크로드에 Auto Scaling을 사용합니다.  
이전 파일에 대한 S3 스토리지 클래스를 구현합니다.  
실제 사용량에 따라 리소스를 모니터링하고 조정합니다.

# AS2 구성
<a name="create-b2b-server"></a>

AS2 지원 서버를 생성하려면 다음 구성 요소도 지정해야 합니다:
+ **계약** - 양자간 거래 파트너 *계약* 또는 파트너십, 메시지(파일)를 교환하는 두 당사자들 사이의 관계를 정의함. 계약을 정의하기 위해 Transfer Family는 서버, 로컬 프로필, 파트너 프로필, 인증서 정보를 결합합니다. Transfer Family AS2-인바운드 프로세스는 계약을 사용합니다.
+ **인증서** - *퍼블릭 키(X.509) 인증서*는 AS2 통신에서 메시지 암호화 및 확인을 위해 사용됩니다. 인증서는 커넥터 엔드포인트에도 사용됩니다.
+ **로컬 프로필 및 파트너 프로필** - *로컬 프로필*은 로컬(AS2 지원 Transfer Family 서버) 조직 또는 “당사자”를 정의합니다. 마찬가지로 *파트너 프로필*은 Transfer Family 외부의 원격 파트너 조직을 정의합니다.

모든 AS2 지원 서버에 필수는 아니지만 아웃바운드 전송의 경우 **커넥터**가 필요합니다. 커넥터는 아웃바운드 연결에 대한 파라미터를 캡처합니다. 커넥터는 고객의 외부 비 AWS 서버로 파일을 전송하는 데 필요합니다.

다음 다이어그램은 인바운드 프로세스와 아웃바운드 프로세스에 관련된 AS2 객체 간의 관계를 나타낸 것입니다.

![\[인바운드 프로세스와 아웃바운드 프로세스에 관련된 AS2 객체 간의 관계를 보여주는 다이어그램입니다.\]](http://docs.aws.amazon.com/ko_kr/transfer/latest/userguide/images/as2-architecture-in-out-agree-connect.png)


종합 예 AS2 구성 에 대한 자세한 설명은 [AS2 구성 설정](as2-example-tutorial.md) 섹션을 참조하세요.

**Topics**
+ [AS2 구성](#as2-supported-configurations)
+ [AS2 할당량 및 제한사항](#as2-limitations)
+ [AS2 특성 및 기능](#as2-capabilities)

## AS2 구성
<a name="as2-supported-configurations"></a>

이 항목에서는 허용되는 암호 및 다이제스트를 포함하여 적용성 보고서 2(AS2) 프로토콜을 사용하는 전송에 대해 지원되는 구성, 기능 및 기능에 대해 설명합니다.

**서명, 암호화, 압축, MDN**

인바운드 전송과 아웃바운드 전송 모두에서 다음 항목은 필수 또는 옵션입니다.
+ **암호화** - 필수 (현재 지원되는 유일한 전송 방법인 HTTP 전송의 경우). 암호화되지 않은 메시지는 ALB (Application Load Balancer) 와 같은 TLS 종료 프록시에 의해 전달되고 `X-Forwarded-Proto: https`헤더가 있는 경우에만 수락됩니다.
+ **서명** — 옵션
+ **압축** - 옵션(현재 지원되는 유일한 압축 알고리즘은 ZLIB)
+ **메시지 처리 알림 (MDN**) — 옵션

**암호(Ciphers)**

인바운드 및 아웃바운드 전송 모두에 대해 다음 암호가 지원됩니다.
+ AES128\$1CBC
+ AES192\$1CBC
+ AES256\$1CBC
+ 3DES(이전 버전과의 호환성에만 해당)

**Digests**

다음 데이터 유형이 지원됩니다.
+ **인바운드 서명 및 MDN —** SHA1, SHA256, SHA384, SHA512
+ **아웃바운드 서명 및 MDN** – SHA1, SHA256, SHA384, SHA512

**MDN**

MDN 응답의 경우 다음과 같은 특정 타입이 지원됩니다.
+ **인바운드 전송** — 동기 및 비동기
+ **아웃바운드 전송**— 동기식 전송 전용
+ **Simple Mail Transfer Protocol (SMTP) (이메일 MDN) — 지원되지 않음**

**Transports**
+ **인바운드 전송** - HTTP는 현재 지원되는 유일한 전송이므로 HTTP를 명시적으로 지정해야 합니다.
**참고**  
인바운드 전송에 HTTPS를 사용해야 하는 경우 Application Load Balancer 또는 Network Load Balancer에서 TLS를 종료할 수 있습니다. 이에 대한 설명은 [HTTPS를 통해 AS2 메시지를 받습니다.](send-as2-messages.md#receive-https)에 나와 있습니다.
+ **아웃바운드 전송** - HTTP URL을 제공하는 경우 암호화 알고리즘도 지정해야 합니다. HTTPS URL을 제공하는 경우 암호화 알고리즘에 **NONE**을 지정할 수 있습니다.

## AS2 할당량 및 제한사항
<a name="as2-limitations"></a>

이 섹션에서는 AS2의 할당량 및 제한 사항에 대해 설명합니다.

**Topics**
+ [AS2 할당량](#as2-quotas)
+ [비밀 처리를 위한 할당량](#as2-quotas-secrets)
+ [알려진 제한 사항](#as2-known-limitations)

### AS2 할당량
<a name="as2-quotas"></a>

AS2 파일 전송에는 다음과 같은 할당량이 적용됩니다. 조정 가능한 할당량 증가를 요청하려면 *AWS 일반 참조*의 [AWS 서비스 할당량](https://docs.aws.amazon.com/general/latest/gr/aws_service_limits.html)을 참조하세요.


**AS2 할당량**  

| 이름 | 기본값 | 조정 가능 | 
| --- | --- | --- | 
| 아웃바운드 요청당 최대 파일 수 | 10 | 아니요 | 
| 초당 최대 아웃바운드 요청 수 | 100 | 아니요 | 
| 초당 최대 인바운드 요청 수 | 100 | 아니요 | 
| 계정당 최대 아웃바운드 대역폭(아웃바운드 SFTP 및 AS2 요청 모두이 값에 기여) | 초당 50MB | 아니요 | 

### 비밀 처리를 위한 할당량
<a name="as2-quotas-secrets"></a>

AWS Transfer Family 는 기본 인증을 사용하는 AS2 고객을 AWS Secrets Manager 대신하여를 호출합니다. 또한 Secrets Manager는를 호출합니다 AWS KMS.

**참고**  
이러한 할당량은 Transfer Family의 보안 암호 사용에 국한되지 않으며의 모든 서비스 간에 공유됩니다 AWS 계정.

[Secrets `GetSecretValue`**Manager의 경우 적용되는 할당량은 할당량에 설명된 대로 DescribeSecret 및 GetSecretValue API 요청의 합산 비율입니다**.AWS Secrets Manager](https://docs.aws.amazon.com/secretsmanager/latest/userguide/reference_limits.html#quotas) 


**Secrets Manager `GetSecretValue`**  

| 이름 | 값 | 설명 | 
| --- | --- | --- | 
| DescribeSecret 및 GetSecretValue API 요청의 합산 비율 | 각각 지원되는 리전: 초당 10,000개 | DescribeSecret 및 GetSecretValue API 작업을 합친 초당 최대 트랜잭션 수입니다. | 

 AWS KMS의 경우 다음 할당량이에 적용됩니다`Decrypt`. 자세한 내용은 [ 각 AWS KMS API 작업에 대한 할당량 요청을 참조하세요](https://docs.aws.amazon.com/kms/latest/developerguide/requests-per-second.html#rps-table).


**AWS KMS `Decrypt`**  

| 할당량 이름 | 기본값(초당 요청 수) | 
| --- | --- | 
|  암호화 작업(대칭) 요청 빈도  |  이러한 공유 할당량은 AWS 리전 및 요청에 사용되는 AWS KMS 키 유형에 따라 달라집니다. 각 할당량은 별도로 계산됩니다. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/transfer/latest/userguide/create-b2b-server.html)  | 
|  사용자 지정 키 스토어 요청 할당량  이 할당량은 외부 키 저장소를 사용하는 경우에만 적용됩니다.   |  사용자 지정 키 저장소 요청 할당량은 각 사용자 지정 키 저장소에 대해 별도로 계산됩니다. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/transfer/latest/userguide/create-b2b-server.html)  | 

### 알려진 제한 사항
<a name="as2-known-limitations"></a>
+ 서버측 TCP keep-Alive는 지원되지 않습니다. 클라이언트가 keep-alive 패킷을 전송하지 않는 한 350초 동안 사용하지 않으면 연결 제한 시간이 초과됩니다.
+ 서비스에서 유효한 계약을 수락하고 Amazon CloudWatch Logs에 표시하려면 메시지에 유효한 AS2 헤더가 포함되어야 합니다.
+ AS2 AWS Transfer Family 용에서 메시지를 수신하는 서버는 [RFC 6211](https://datatracker.ietf.org/doc/html/rfc6211)에 정의된 대로 메시지 서명을 검증하기 위한 암호화 메시지 구문(CMS) 알고리즘 보호 속성을 지원해야 합니다. 이 속성은 일부 구형 IBM Sterling 제품에서는 지원되지 않습니다.
+ 메시지 ID가 중복되면 처리됨/경고: 문서 중복 메시지가 표시됩니다.
+ AS2 인증서의 키 길이는 최소 2,048비트, 최대 4,096비트여야 합니다.
+ AS2 메시지 또는 비동기 mDN을 거래 파트너의 HTTPS 엔드포인트로 보내는 경우 메시지 또는 mDN은 공개적으로 신뢰할 수 있는 인증 기관 (CA) 에서 서명한 유효한 SSL 인증서를 사용해야 합니다. 자체 서명된 인증서는 현재 아웃바운드 전송에만 지원됩니다.
+ 엔드포인트는 TLS 버전 1.2 프로토콜과 보안 정책에서 허용하는 암호화 알고리즘을 ([AWS Transfer Family 서버에 대한 보안 정책](security-policies.md)에서 설명한 것과 같이) 지원해야 합니다. 
+ AS2 버전 1.2의 다중 첨부 파일 및 CEM (인증서 교환 메시징) 은 현재 지원되지 않습니다.
+ 기본 인증은 현재 아웃바운드 메시지에만 지원됩니다.
+ AS2 프로토콜을 사용하는 Transfer Family 서버에 파일 처리 워크플로를 연결할 수 있습니다. 하지만 AS2 메시지는 서버에 연결된 워크플로를 실행하지 않습니다.

## AS2 특성 및 기능
<a name="as2-capabilities"></a>

다음 표에는 AS2를 사용하는 Transfer Family 리소스에 사용할 수 있는 기능이 나열되어 있습니다.

### AS2 특성
<a name="as2-features"></a>

Transfer Family는 AS2에 다음과 같은 특성을 제공합니다.


| Feature | Supported by AWS Transfer Family | 
| --- |--- |
|  [Drummond 인증](https://aws.amazon.com/about-aws/whats-new/2023/06/aws-transfer-family-drummond-group-as2-certification/) | Yes | 
| [AWS CloudFormation 지원](https://docs.aws.amazon.com/transfer/latest/userguide/as2-cfn-demo-template.html)  | Yes | 
| [Amazon CloudWatch 지표](https://docs.aws.amazon.com/transfer/latest/userguide/as2-monitoring.html) | Yes | 
| [SHA-2 암호화 알고리즘](https://docs.aws.amazon.com/transfer/latest/userguide/security-policies.html#cryptographic-algorithms) | Yes | 
| Support for Amazon S3 | Yes | 
| Support for Amazon EFS | No | 
| Scheduled Messages | Yes 1 | 
| AWS Transfer Family Managed Workflows | No | 
| Certificate Exchange Messaging (CEM) | No | 
| Mutual TLS (mTLS) | No | 
| Support for self-signed certificates | Yes | 

1. [Amazon EventBridge를 사용하여 AWS Lambda 함수를 예약](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-run-lambda-schedule.html)하여 아웃바운드 예약 메시지 사용 가능

### AS2 송신 및 수신 기능
<a name="as2-capabilities"></a>

다음 표에는 AWS Transfer Family AS2 송수신 기능 목록이 나와 있습니다.


| Capability | Inbound: Receiving with server | Outbound: Sending with connector | 
| --- |--- |--- |
| [TLS 암호화 전송 (HTTPS)](send-as2-messages.md#as2-https-process) | 예 1 | Yes | 
| Non-TLS Transport (HTTP) | Yes |  예 2  | 
| Synchronous MDN | Yes | Yes | 
| Message Compression | Yes | Yes | 
| Asynchronous MDN | Yes | No | 
| Static IP Address | Yes | Yes | 
| Bring Your Own IP Address | Yes | No | 
| Multiple File Attachments | No | No | 
| Basic Authentication | No | Yes | 
| AS2 Restart | Not applicable | No | 
| AS2 Reliability | No | No | 
| Custom Subject per Message | Not applicable | No | 

1. Network Load Balancer(NLB) 또는 Application Load Balancer(ALB)에서 사용할 수 있는 인바운드 TLS 암호화 전송

2. 아웃바운드 비 TLS 전송은 암호화가 활성화된 경우에만 사용할 수 있습니다.

# AS2 인증서 관리
<a name="managing-as2-partners"></a>

이 주제에서는 AS2 인증서를 가져오고 관리하는 방법을 설명합니다. 인증서 가져오기는 Transfer Family에 대한 AS2 프로세스의 첫 번째 단계입니다.

1. 인증서 가져오기

1. [AS2 프로필 생성](configure-as2-profile.md)

1. [AS2 서버 생성](create-as2-transfer-server.md) 

1. [AS2 계약 생성](create-as2-transfer-server.md#as2-agreements)

1. [AS2 커넥터 구성](configure-as2-connector.md)

## AS2 인증서 가져오기
<a name="configure-as2-certificate"></a>

Transfer Family AS2 프로세스는 전송된 정보의 암호화와 서명 모두에 인증서 키를 사용합니다. 파트너는 두 가지 용도로 동일한 키를 사용하거나 각 용도에 별도의 키를 사용할 수 있습니다. 재해 또는 보안 침해 발생 시 데이터를 복호화할 수 있도록 신뢰할 수 있는 제3자가 에스크로에 공통 암호화 키를 보관해 둔 경우 별도의 서명 키를 사용하는 것이 좋습니다. 별도의 서명 키(에스크로하지 않음)를 사용하면 디지털 서명의 부인 방지 기능이 손상되지 않습니다.

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

다음 사항은 프로세스 중에 AS2 인증서가 사용되는 방법을 자세히 설명합니다.
+ 인바운드 AS2
  + 거래 파트너가 서명 인증서용 퍼블릭 키를 보내면 이 키를 파트너 프로필로 가져옵니다.
  + 현지 당사자가 암호화 및 서명 인증서를 위한 퍼블릭 키를 전송합니다. 그러면 파트너가 프라이빗 키를 가져옵니다. 로컬 당사자는 서명 및 암호화를 위해 별도의 인증서 키를 보내거나 두 가지 용도로 동일한 키를 사용하도록 선택할 수 있습니다.
+ 아웃바운드 AS2
  + 파트너가 암호화 인증서용 퍼블릭 키를 보내고 이 키를 파트너 프로필로 가져옵니다.
  + 로컬 당사자는 서명용 인증서의 퍼블릭 키를 보내고 서명을 위해 인증서의 프라이빗 키를 가져옵니다.
  + HTTPS를 사용하는 경우 자체 서명된 전송 계층 보안(TLS) 인증서를 가져올 수 있습니다.

인증서 생성 방법에 대한 자세한 설명은 [1단계: AS2용 인증서 생성](as2-example-tutorial.md#as2-create-certs) 섹션을 참조하세요.

이 절차에서는 Transfer Family 콘솔을 사용하여 인증서를 가져오는 방법을 설명합니다. AWS CLI 대신를 사용하려면 단원을 참조하십시오[2단계: 인증서를 Transfer Family 인증서 리소스로 가져오기](as2-example-tutorial.md#as2-import-certs-example).

**AS2 지원 인증서를 지정하려면**

1. [https://console.aws.amazon.com/transfer/](https://console.aws.amazon.com/transfer/) AWS Transfer Family 콘솔을 엽니다.

1. 왼쪽 탐색 창의 **AS2 거래 파트너**에서 **인증서**를 선택합니다.

1. **인증서 가져오기**를 선택합니다.

1. **인증서 구성** 섹션의 **인증서 설명**에 인증서의 쉽게 식별할 수 있는 이름을 입력합니다. 설명으로 인증서의 용도를 식별할 수 있는지 확인하세요. 또한 인증서의 역할을 선택합니다.

1. **인증서 용도** 섹션에서 이 인증서의 용도를 선택합니다. 암호화, 서명 또는 둘 다에 사용할 수 있습니다.

   **팁: **사용량에 대해 **암호화 및 서명을** 선택하면 Transfer Family는 두 개의 동일한 인증서(각각 고유한 ID가 있음)를 생성합니다. 하나는 사용 값이 `ENCRYPTION`이고 다른 하나는 사용 값이 입니다`SIGNING`.

1. **인증서 내용** 섹션에서 거래 파트너의 공개 인증서를 제공하거나 로컬 인증서용 공개 및 프라이빗 키를 제공하세요.

   **인증서 내용** 섹션에 적절한 세부 정보를 입력합니다.
   + **자체 서명 인증서**를 선택하는 경우 인증서 체인을 제공하지 않습니다.
   + 인증서 텍스트와 해당 체인을 **인증서 및 인증서 체인** 필드에 붙여 넣습니다.
   + 이 인증서가 로컬 인증서인 경우 프라이빗 키를 붙여 넣습니다.

1. **인증서 가져오기**를 선택하여 프로세스를 완료하고 가져온 인증서의 세부 정보를 저장합니다.

**참고**  
TLS 인증서는 파트너의 퍼블릭 인증서로만 가져올 수 있습니다. **파트너의 퍼블릭 인증서를** 선택한 다음 사용량에 대해 **전송 계층 보안(TLS)**을 선택하면 경고가 표시됩니다. 또한 TLS 인증서는 자체 서명되어야 합니다(즉, TLS 인증서를 가져오려면 **자체 서명된** 인증서를 선택해야 함).

## AS2 인증서 교체
<a name="as2-certificate-rotation"></a>

인증서는 6개월에서 1년 동안 유효한 경우가 많습니다. 더 오래 유지하려는 프로필을 설정했을 수 있습니다. 이를 용이하게 하기 위해 Transfer Family는 인증서 교체 서비스를 제공합니다. 프로필에 여러 인증서를 지정하여 프로필을 여러 해 동안 계속 사용할 수 있습니다. Transfer Family는 서명(옵션) 및 암호화(필수)에 인증서를 사용합니다. 원하는 경우 두 가지 용도로 사용할 단일 인증서를 지정할 수 있습니다.

인증서 교체는 만료되는 오래된 인증서를 새 인증서로 교체하는 프로세스입니다. 이 전환은 계약 파트너가 아직 아웃바운드 전송을 위한 새 인증서를 구성하지 않았거나 새 인증서를 사용할 수 있는 기간 중에 이전 인증서로 서명 또는 암호화된 페이로드를 보내는 경우 전송이 중단되지 않도록 점진적으로 진행됩니다. 기존 인증서와 새 인증서가 모두 유효한 중간 기간을 *유예 기간*이라고 합니다.

X.509 인증서에는 `Not Before` 및 `Not After` 날짜가 있습니다. 하지만 이러한 파라미터는 관리자에게 충분한 통제 기능을 제공하지 못할 수 있습니다. Transfer Family는 아웃바운드 페이로드에 사용되는 인증서와 인바운드 페이로드에 허용되는 인증서를 통제하는 `Active Date` 및 `Inactive Date` 설정을 제공합니다.

### 인증서 만료 모니터링
<a name="as2-certificate-expiry-monitoring"></a>

Transfer Family는 인증서를 가져온 `DaysUntilExpiry` 후 Amazon CloudWatch 지표를 게시합니다. 지표는 현재 날짜와 인증서의 로 지정된 날짜 사이의 일수`InactiveDate`를 내보냅니다. 지표는 CloudWatch 지표 대시보드의 `Transfer` AWS 네임스페이스 아래에 있습니다.

이 지표는 항상 **CertificateId**에 대한 지표 차원을 가지며 고객이 인증서에 제공하는 경우 선택적으로 **설명** 차원을 포함합니다. CloudWatch 지표 차원에 대한 자세한 내용은 *CloudWatch API* 참조의 [차원](https://docs.aws.amazon.com/AmazonCloudWatch/latest/APIReference/API_Dimension.html)을 참조하세요.

**참고**  
Transfer Family용 인증서를 가져온 후이 지표를 고객 계정으로 내보내는 데 최대 하루가 걸릴 수 있습니다.

이 지표를 사용하여 인증서가 만료될 때 알려주는 CloudWatch 경보를 생성할 수 있습니다.

아웃바운드 인증서 선택은 전송 날짜 이전의 최대값을 `Inactive Date`로 사용합니다. 인바운드 프로세스는 범위 `Not Before` 및 `Not After` 내 및 범위 `Active Date` 및 `Inactive Date` 내에서 인증서를 수락합니다.

### 인증서 교체 예제
<a name="as2-cert-rotate-example"></a>

다음 표에서는 단일 프로필에 대해 두 개의 인증서를 구성할 수 있는 한 가지 방법을 설명합니다.


**두 개의 인증서 교대**  

| 명칭 | NOT BEFORE(인증 기관에서 통제) | ACTIVE DATE(Transfer Family에서 설정) | INACTIVE DATE(Transfer Family에서 설정) | NOT AFTER(인증 기관에서 설정) | 
| --- | --- | --- | --- | --- | 
| Cert1(이전 인증서) | 2019-11-01 | 2020-01-01 | 2020-12-31 | 2024-01-01 | 
| Cert2(최신 인증서) | 2020-11-01 | 2020-06-01 | 2021-06-01 | 2025-01-01 | 

 유념할 사항: 
+ 인증서에 `Active Date` 및 `Inactive Date`를 지정하는 경우 범위는 `Not Before` 및 `Not After`의 범위 내에 있어야 합니다.
+ 각 프로필에 대해 여러 인증서를 구성하여 모든 인증서의 활성 날짜 범위가 프로필을 사용하려는 기간을 포함하도록 하는 것이 좋습니다.
+ 이전 인증서가 비활성화되는 시점과 새 인증서가 활성화되는 시점 사이에 약간의 유예 시간을 지정하는 것이 좋습니다. 위 예에서 첫 번째 인증서는 2020년 12월 31일까지는 비활성화되지 않지만, 두 번째 인증서는 2020년 6월 1일에 활성화되어 6개월의 유예 기간이 제공됩니다. 2020년 6월 1부터 2020년 12월 31일까지의 기간 동안 두 인증서 모두 활성 상태입니다.

# AS2 프로필 생성
<a name="configure-as2-profile"></a>

이 주제에서는 AS2 프로세스에 사용할 프로필을 생성하는 방법을 설명합니다. *로컬 프로필*은 로컬(AS2 지원 Transfer Family 서버) 조직 또는 " 파티"를 정의합니다. 마찬가지로 *파트너 프로필*은 Transfer Family 외부의 원격 파트너 조직을 정의합니다.

1. [AS2 인증서 가져오기](managing-as2-partners.md#configure-as2-certificate)

1. AS2 프로필 생성

1. [AS2 서버 생성](create-as2-transfer-server.md) 

1. [AS2 계약 생성](create-as2-transfer-server.md#as2-agreements)

1. [AS2 커넥터 구성](configure-as2-connector.md)

이 절차를 사용하여 로컬 프로필과 파트너 프로필을 모두 생성할 수 있습니다. 이 절차에서는 Transfer Family 콘솔을 사용하여 AS2 프로필을 생성하는 방법에 대해 설명합니다. 이 방법 대신 AWS CLI 를 사용하려면 [3단계: 사용자와 거래 파트너를 위한 프로필 생성](as2-example-tutorial.md#as2-create-profiles-example) 섹션을 참조하세요.

**AS2 프로필을 생성하려면**

1. [https://console.aws.amazon.com/transfer/](https://console.aws.amazon.com/transfer/) AWS Transfer Family 콘솔을 엽니다.

1. 왼쪽 탐색 창의 **AS2 거래 파트너**에서 **프로필**을 선택한 다음 **프로필 생성**을 선택합니다.

1. **프로필 구성** 섹션에서 프로필의 AS2 ID를 입력합니다. 이 값은 AS2 프로토콜별 HTTP 헤더 `as2-from` 및 `as2-to`에 사용되며 거래 파트너십을 식별하고 사용할 인증서를 결정하는 등의 용도로 사용됩니다.

1. **프로필 타입** 섹션에서 **로컬 프로필** 또는 **파트너 프로필**을 선택합니다.

1. **인증서** 섹션의 드롭다운 메뉴에서 하나 이상의 인증서를 선택합니다.

   **팁: **드롭다운 메뉴에 나열되지 않은 인증서를 가져오려면 **새 인증서 가져오기를** 선택합니다. 그러면 **인증서 가져오기** 화면에 새 브라우저 창이 열립니다. 인증서 가져오기 절차에 대한 자세한 설명은 [AS2 인증서 가져오기](managing-as2-partners.md#configure-as2-certificate) 섹션을 참조하세요.

1. (옵션) **태그** 섹션에서 이 프로필을 식별하는 데 도움이 되는 키-값 쌍을 하나 이상 지정합니다.

1. **프로필 생성**을 선택하여 프로세스를 완료하고 새 프로필을 저장합니다.

# AS2 서버 생성
<a name="create-as2-transfer-server"></a>

이 주제에서는 콘솔 또는 CloudFormation 템플릿을 사용하여 AS2-enabled Transfer Family 서버를 생성하는 지침을 제공합니다. 종합 예 AS2 구성 에 대한 자세한 설명은 [AS2 구성 설정](as2-example-tutorial.md) 섹션을 참조하세요. AS2 서버를 생성한 후 서버에 계약을 추가할 수 있습니다.

1. [AS2 인증서 가져오기](managing-as2-partners.md#configure-as2-certificate)

1. [AS2 프로필 생성](configure-as2-profile.md)

1. AS2 서버 생성

1. [AS2 계약 생성](#as2-agreements)

1. [AS2 커넥터 구성](configure-as2-connector.md)

**Topics**
+ [Transfer Family 콘솔을 사용하여 AS2 서버 생성](#create-server-as2-console)
+ [템플릿을 사용하여 데모 Transfer Family AS2 스택을 생성하세요.](#as2-cfn-demo-template)
+ [AS2 계약 생성](#as2-agreements)

## Transfer Family 콘솔을 사용하여 AS2 서버 생성
<a name="create-server-as2-console"></a>

이 절차에서는 Transfer Family 콘솔을 사용하여 AS2 지원 서버를 생성하는 방법을 설명합니다. AWS CLI 대신를 사용하려면 단원을 참조하십시오[4단계: AS2 프로토콜을 사용하는 Transfer Family 서버 생성](as2-example-tutorial.md#as2-example-server).

**참고**  
AS2 프로토콜을 사용하는 Transfer Family 서버에 파일 처리 워크플로를 연결할 수 있습니다. 그러나 AS2 메시지는 서버에 연결된 워크플로를 실행하지 않습니다.

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

1. [https://console.aws.amazon.com/transfer/](https://console.aws.amazon.com/transfer/) AWS Transfer Family 콘솔을 엽니다.

1. 탐색 창에서 **서버**를 선택한 다음 **서버 생성**을 선택합니다.

1. **프로토콜 선택** 페이지에서 **AS2(적용 가능성 선언문 2)를** 선택하고 **다음**을 선택합니다.

1. **자격 증명 제공자 선택** 페이지에서 **다음**을 선택합니다.
**참고**  
AS2의 경우 AS2 프로토콜에 대해 기본 인증이 지원되지 않기 때문에 ID 제공자를 선택할 수 없습니다. 대신 Virtual Private Cloud(VPC) 보안 그룹을 통해 액세스를 통제합니다.

1. **엔드포인트 선택** 페이지에서 다음을 수행합니다.  
![\[VPC 호스팅이 선택된 엔드포인트 선택 페이지를 보여주는 콘솔 스크린샷.\]](http://docs.aws.amazon.com/ko_kr/transfer/latest/userguide/images/create-server-choose-endpoint-vpc-internal.png)

   1. **엔드포인트 타입**에서 서버의 엔드포인트를 호스팅할 **VPC 호스팅**을 선택합니다. VPC 호스팅 엔드포인트를 설정하는 자세한 설명은 [Virtual Private Cloud(VPC)에 서버 생성](create-server-in-vpc.md) 섹션을 참조하세요.
**참고**  
공개적으로 액세스할 수 있는 엔드포인트는 AS2 프로토콜에서 지원되지 않습니다. 인터넷을 통해 VPC 엔드포인트에 액세스할 수 있게 하려면 **액세스**에서 **인터넷 연결**을 선택한 다음 탄력적 IP 주소를 입력합니다.

   1. **액세스**에서 다음 옵션 중 하나를 선택합니다.
      + **내부** - 이 옵션을 선택하면 VPC 및 VPC로 연결된 환경(예: Direct Connect 또는 VPN을 통한 온프레미스 데이터 센터 등) 내에서 액세스할 수 있습니다.
      + **인터넷 연결** - 인터넷을 통해 그리고 VPC 및 Direct Connect 또는 VPN을 통한 온프레미스 데이터 센터와 같은 VPC 연결 환경 내에서 액세스를 제공하려면이 옵션을 선택합니다.

        **인터넷 연결**을 선택하는 경우 메시지가 표시되면 탄력적 IP 주소를 제공하세요.

   1. **VPC**의 경우 기존 VPC를 선택하거나 **VPC 생성**을 선택하여 새 VPC를 생성합니다.

   1. **FIPS 지원**의 경우 **FIPS 지원 엔드포인트** 확인란의 선택을 취소한 상태로 유지합니다.
**참고**  
FIPS 지원 엔드포인트는 AS2 프로토콜에서 지원되지 않습니다.

   1. **다음**을 선택합니다.

1. **도메인 선택** 페이지에서 선택한 프로토콜을 사용하여 파일을 객체로 저장하고 액세스하려면 **Amazon S3**를 선택합니다.

   **다음**을 선택합니다.

1. **추가 세부 정보 구성** 페이지에서 필요한 설정을 선택합니다.
**참고**  
AS2와 함께 다른 프로토콜을 구성하는 경우 모든 추가 세부 설정이 적용됩니다. 하지만 AS2 프로토콜의 경우 **CloudWatch 로깅** 및 **태그** 섹션의 설정만 적용됩니다.  
CloudWatch 로깅 역할 설정은 옵션이지만 메시지 상태를 확인하고 구성 문제를 해결할 수 있도록 로깅 역할을 설정하는 것이 좋습니다.

1. **검토 및 생성** 페이지에서 옵션을 검토하여 올바른지 확인하세요.
   + 설정을 편집하려면 변경하려는 단계 옆의 **편집**을 선택합니다.
**참고**  
단계를 편집하는 경우 편집하기로 선택한 단계 이후의 각 단계를 검토하는 것이 좋습니다.
   + 변경 사항이 없는 경우 **서버 생성**을 선택하여 서버를 생성하세요. **서버** 페이지로 이동하고, 새 서버가 나열되는 다음 화면이 표시됩니다.

     새 서버 상태가 **온라인**으로 변경되기까지 몇 분 정도 걸릴 수 있습니다. 이때부터 서버는 사용자의 파일 작업을 수행할 수 있습니다.

## 템플릿을 사용하여 데모 Transfer Family AS2 스택을 생성하세요.
<a name="as2-cfn-demo-template"></a>

AS2-enabled Transfer Family 서버를 빠르게 생성하기 위해 독립형 CloudFormation 템플릿이 제공됩니다. 템플릿은 퍼블릭 Amazon VPC 엔드포인트, 인증서, 로컬 및 파트너 프로필, 계약, 커넥터로 서버를 구성합니다.

기본 AS2 서버 템플릿은 다음 리소스를 생성합니다.
+ VPC 엔드포인트가 있는 AS2-enabled Transfer Family 서버
+ 인증서가 있는 로컬 및 파트너 AS2 프로필
+ 프로필 간의 계약
+ 파일 스토리지용 Amazon S3 버킷
+ 필수 IAM 역할 및 정책
+ CloudWatch 로깅 구성

 이 템플릿을 사용하기 전에 다음 사항에 유의하세요.
+ 이 템플릿에서 스택을 생성할 경우, 사용한 AWS 리소스에 대한 요금이 청구됩니다.
+ 템플릿은 여러 인증서를 생성하고에 배치 AWS Secrets Manager 하여 안전하게 저장합니다. 이 서비스를 사용하면 요금이 부과되므로 원하는 경우 Secrets Manager에서 이러한 인증서를 삭제할 수 있습니다. Secrets Manager에서 이러한 인증서를 삭제해도 Transfer Family 서버에서는 삭제되지 않습니다. 따라서 데모 스택의 기능은 영향을 받지 않습니다. 하지만 프로덕션 AS2 서버에서 사용할 인증서의 경우 Secrets Manager를 사용하여 저장된 인증서를 관리하고 주기적으로 교체하는 것이 좋습니다.
+ 템플릿은 기본 용도로만 사용하고 주로 데모 용도로만 사용하는 것이 좋습니다. 프로덕션 환경에서 이 데모 스택을 사용하려는 경우 템플릿의 YAML 코드를 수정하여 보다 강력한 스택을 만드는 것이 좋습니다. 예를 들어 프로덕션 수준의 인증서를 만들고 프로덕션에서 사용할 수 있는 AWS Lambda 함수를 만들어 보세요.

**CloudFormation 템플릿에서 AS2 지원 Transfer Family 서버를 만들려면**

1. [https://console.aws.amazon.com/cloudformation](https://console.aws.amazon.com/cloudformation/) CloudFormation 콘솔을 엽니다.

1. 왼쪽 탐색 창에서 **스택**을 선택합니다.

1. **스택 생성**을 선택한 다음 **새 리소스 사용(표준)**을 선택합니다.

1. **사전 조건 - 템플릿 준비** 섹션에서 **기존 템플릿 선택을** 선택합니다.

1. [AS2 데모 템플릿](https://s3.amazonaws.com/aws-transfer-resources/as2-templates/aws-transfer-as2-basic.template.yml)인 이 링크를 복사하여 **Amazon S3 URL** 필드에 붙여넣습니다.

1. **다음**을 선택합니다.

1. **스택 세부 정보 지정** 페이지에서 스택의 이름을 지정한 다음 파라미터를 지정합니다.
   + **AS2**에서 **로컬 AS2 ID** 및 **파트너 AS2 ID**의 값을 입력하거나 기본값인 `local` 및 `partner`를 각각 적용합니다. 
   + **네트워크**에서 **보안 그룹 인그레스 CIDR IP**에 값을 입력하거나 기본값 `0.0.0.0/0`을 그대로 사용합니다.
**참고**  
이 값은 CIDR 형식으로 AS2 서버로 들어오는 트래픽에 허용되는 IP 주소를 지정합니다. 기본값인 `0.0.0.0/0`은 모든 IP 주소를 허용합니다.
   + **일반**에서 **접두사**에 값을 입력하거나 기본값인 `transfer-as2`을 그대로 사용합니다. 이 접두사는 스택에서 생성되는 모든 리소스 이름 앞에 위치합니다. 예를 들어, 기본 접두사를 사용하는 경우 Amazon S3 버킷의 `transfer-as2-amzn-s3-demo-bucket`라는 이름이 지정됩니다.

1. **다음**을 선택합니다. **스택 옵션 구성**페이지에서 **다음**을 다시 선택합니다.

1. 생성 중인 스택의 세부 정보를 검토한 다음 **스택 생성**을 선택합니다.
**참고**  
페이지 하단의 **기능**에서가 AWS Identity and Access Management (IAM) 리소스를 생성할 CloudFormation 수 있음을 확인해야 합니다.

스택이 생성된 후 AWS Command Line Interface ()를 사용하여 파트너 서버에서 로컬 Transfer Family 서버로 테스트 AS2 메시지를 보낼 수 있습니다AWS CLI. 테스트 메시지를 보내기 위한 샘플 AWS CLI 명령은 스택의 다른 모든 리소스와 함께 생성됩니다.

이 샘플 명령을 사용하려면, 스택의 **출력** 탭으로 이동하여 **TransferExampleAs2Command** 를 복사하세요. 그런 다음 AWS CLI를 사용하여 명령을 실행할 수 있습니다. 아직를 설치하지 않은 경우 *AWS Command Line Interface 사용 설명서*의 [의 최신 버전 설치 또는 업데이트를 AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html) AWS CLI참조하세요.

샘플 명령의 형식은 다음과 같습니다.

```
aws s3api put-object --bucket amzn-s3-demo-bucket --key test.txt && aws transfer start-file-transfer --region aws-region --connector-id TransferConnectorId --send-file-paths /amzn-s3-demo-bucket/test.txt
```

**참고**  
이 명령의 버전에는 스택에 있는 `amzn-s3-demo-bucket` 및 `TransferConnectorId` 리소스의 실제 값이 포함되어 있습니다.

이 샘플 명령은 `&&` 문자열을 사용하여 서로 연결된 두 개의 개별 명령으로 구성되어 있습니다.

첫 번째 명령은 버킷에 비어 있는 새 텍스트 파일을 만듭니다.

```
aws s3api put-object --bucket amzn-s3-demo-bucket --key test.txt
```

그런 다음 두 번째 명령은 커넥터를 사용하여 파트너 프로필에서 로컬 프로필로 파일을 보냅니다. Transfer Family 서버에는 로컬 프로필이 파트너 프로필의 메시지를 수락하도록 허용하는 계약이 설정되어 있습니다.

```
aws transfer start-file-transfer --region aws-region --connector-id TransferConnectorId --send-file-paths /amzn-s3-demo-bucket/test.txt
```

명령을 실행한 후 Amazon S3 버킷(`amzn-s3-demo-bucket`)으로 이동하여 콘텐츠를 볼 수 있습니다. 명령이 제대로 실행되면 버킷에 다음과 같은 객체가 표시되어야 합니다.
+ `processed/`— 이 폴더에는 전송된 파일과 MDN 응답을 설명하는 JSON 파일이 들어 있습니다.
+ `processing/`— 이 폴더에는 처리 중인 파일이 일시적으로 포함되지만 전송이 완료된 후에는 이 폴더가 비어 있어야 합니다.
+ `server-id/`— 이 폴더의 이름은 Transfer Family 서버 ID에 따라 붙여집니다. 여기에는 `from-partner` (이 폴더의 이름은 파트너의 AS2 ID에 따라 동적으로 붙여짐)이고, 이것은 그 자체가 `failed/``processed/`, 및 `processing/` 폴더가 들어 있습니다. `/server-id/from-partner/processed/` 폴더에는 전송된 텍스트 파일의 사본과 해당 JSON 및 MDN 파일이 들어 있습니다.
+ `test.txt`— 이 객체는 전송된 (빈) 파일입니다.

## AS2 계약 생성
<a name="as2-agreements"></a>

계약은 Transfer Family 서버와 연결되어 있습니다. AS2 프로토콜을 사용하는 거래 파트너가 Transfer Family를 사용하여 메시지 또는 파일을 교환하는 *인바운드* 전송, 즉 파트너 소유의 외부 소스에서 Transfer Family 서버로 AS2 파일을 보내는 방식으로 메시지나 파일을 교환하는 거래 파트너에 대한 세부 정보를 지정합니다.

이 절차에서는 Transfer Family 콘솔을 사용하여 AS2 계약서를 생성하는 방법에 대해 설명합니다. AWS CLI 대신를 사용하려면 단원을 참조하십시오[5단계: 사용자와 사용자의 파트너 간의 계약서 작성](as2-example-tutorial.md#as2-create-agreement-example).

**Transfer Family 서버에 대한 계약을 만들려면**

1. [https://console.aws.amazon.com/transfer/](https://console.aws.amazon.com/transfer/) AWS Transfer Family 콘솔을 엽니다.

1. 왼쪽 탐색 창에서 **서버**를 선택한 다음 AS2 프로토콜을 사용하는 서버를 선택합니다.

   또는 AS2 프로토콜을 사용하는 Transfer Family 서버가 하나 이상 있는 경우 계약을 선택하여 **AS2 ** **AS2 거래 파트너 메뉴에서 메시지를 수신합니다**. 그런 다음 **계약 생성** 화면에서이 계약을 연결할 AS2 서버를 선택합니다.

1. 서버 세부 정보 페이지에서 **계약** 섹션으로 스크롤합니다.

1. **계약 추가**를 선택합니다.

1. 다음과 같이 계약 파라미터를 입력합니다:

   1. **계약 구성** 섹션에 설명적인 이름을 입력합니다. 이름으로 계약의 목적을 식별할 수 있는지 확인하세요. 또한 계약 **상태**를 **활성**(기본적으로 선택됨) 또는 **비활성**으로 설정합니다.

   1. **통신 구성** 섹션에서 로컬 프로필과 파트너 프로필을 선택합니다. 또한 메시지 서명을 적용할지 여부를 선택합니다.
      + 기본적으로 **메시지 서명 적용**이 활성화되어 있습니다. 즉, Transfer Family는이 계약에 대해 거래 파트너의 서명되지 않은 메시지를 거부합니다.
      + Transfer Family가이 계약에 대해 거래 파트너의 서명되지 않은 메시지를 수락하도록 허용하려면이 설정을 선택 취소합니다.

   1. **받은 편지함 디렉터리 구성** 섹션에서 다음 정보를 제공합니다.
      + **AS2 메시지, MDN 파일 및 JSON 상태 파일을 저장할 별도의 디렉터리 지정을** 선택할지 여부를 결정합니다.
        + 이 옵션을 선택하면 페이로드 파일, 실패한 파일, MDN 파일, 상태 파일 및 임시 파일에 대해 별도의 위치를 지정합니다.
        + 이 옵션을 선택 취소하면 모든 AS2 파일이 기본 디렉터리에 지정한 위치로 이동합니다.
      + **S3 버킷**에서 Amazon S3 버킷을 선택합니다.
      + **접두**사에 버킷에 파일을 저장하는 데 사용할 접두사(폴더)를 입력할 수 있습니다.

        예를 들어 버킷과 접두사**amzn-s3-demo-bucket**에 **incoming**를 입력하면 AS2 파일이 `/amzn-s3-demo-bucket/incoming` 폴더에 저장됩니다.
      + **AWS IAM 역할**에서 지정한 버킷에 액세스할 수 있는 역할을 선택합니다.
      + **파일 이름 보존**에서 수신 AS2 메시지 페이로드의 원래 파일 이름을 보존할지 여부를 선택합니다.
        + 이 설정을 선택하면 파일이 Amazon S3에 저장될 때 거래 당사자가 제공한 파일 이름이 보존됩니다.
        + 이 설정을 선택 취소하면 Transfer Family가 파일을 저장할 때에 설명된 대로 파일 이름이 조정됩니다[파일 이름 및 위치](send-as2-messages.md#file-names-as2).

   1. (옵션) **태그** 섹션에서 태그를 추가합니다.

   1. 계약에 대한 모든 정보를 입력한 후 **계약 생성**을 선택합니다.

새 계약은 서버 세부 정보 페이지의 **계약** 섹션에 표시됩니다.

# AS2 커넥터 구성
<a name="configure-as2-connector"></a>

커넥터의 목적은 *아웃바운드* 전송을 위해 거래 파트너들 사이이의 관계를 설정하는 것입니다. 즉, Transfer Family 서버에서 파트너 소유의 외부 대상으로 AS2 파일을 보내는 것입니다. 커넥터의 경우 로컬 및 파트너 프로필을 생성하여 로컬 당사자, 원격 파트너 및 인증서를 지정합니다.

커넥터를 설치한 후에는 거래 파트너에게 정보를 전송할 수 있습니다. 각 AS2 서버에는 세 개의 고정 IP 주소가 할당됩니다. AS2 커넥터는 이러한 IP 주소를 사용하여 AS2를 통해 거래 파트너에게 비동기 MDNs 전송합니다.

**참고**  
거래 파트너가 수신한 메시지 크기는 Amazon S3의 객체 크기와 일치하지 않습니다. AS2 메시지가 파일을 보내기 전에 봉투에 싸서 보내기 때문에 이러한 불일치가 발생합니다. 따라서 파일을 압축하여 전송하더라도 파일 크기가 커질 수 있습니다. 따라서 거래 파트너의 최대 파일 크기가 보내는 파일 크기보다 커야 합니다.

1. [AS2 인증서 가져오기](managing-as2-partners.md#configure-as2-certificate)

1. [AS2 프로필 생성](configure-as2-profile.md)

1. [AS2 서버 생성](create-as2-transfer-server.md)

1. [AS2 계약 생성](create-as2-transfer-server.md#as2-agreements)

1. AS2 커넥터 생성

## AS2 커넥터 생성
<a name="create-as2-connector"></a>

이 절차에서는 AWS Transfer Family 콘솔을 사용하여 AS2 커넥터를 생성하는 방법에 대해 설명합니다. AWS CLI 대신를 사용하려면 단원을 참조하십시오[6단계: 사용자와 사용자의 거래 파트너 간의 커넥터를 생성합니다.](as2-example-tutorial.md#as2-create-connector-example).

**AS2 커넥터를 생성하려면**

1. [https://console.aws.amazon.com/transfer/](https://console.aws.amazon.com/transfer/) AWS Transfer Family 콘솔을 엽니다.

1. 왼쪽 탐색 창의 **AS2 거래 파트너** 메뉴에서 **메시지를 전송할 커넥터를** 선택한 다음 ** AS2 커넥터 생성을** 선택합니다.

1. **커넥터 구성** 섹션에서 다음 정보를 지정합니다:
   + **URL** - 아웃바운드 연결의 URL을 입력합니다.
   + **액세스 역할** - 사용할 (IAM) 역할의 Amazon 리소스 이름 AWS Identity and Access Management (ARN)을 선택합니다. 이 역할이 `StartFileTransfer` 요청에서 사용된 파일 위치의 상위 디렉터리에 대한 읽기 및 쓰기 액세스 권한을 제공하는지 확인하세요. 또한 그 역할이 `StartFileTransfer`와 함께 전송하려는 파일의 상위 디렉터리에 대한 읽기 및 쓰기 액세스 권한을 제공하는 지 확인하세요.
**참고**  
커넥터에 기본 인증을 사용하는 경우 액세스 역할에는 암호에 대한 `secretsmanager:GetSecretValue` 권한이 필요합니다. AWS 관리형 키 에서 대신 고객 관리형 키를 사용하여 보안 암호를 암호화하는 AWS Secrets Manager경우 역할에는 해당 키에 대한 `kms:Decrypt` 권한도 필요합니다. 접두사 `aws/transfer/`를 사용하여 암호의 명칭을 지정하는 경우 [암호 생성 권한 예](https://docs.aws.amazon.com/secretsmanager/latest/userguide/auth-and-access_examples.html#auth-and-access_examples_wildcard)에 나와 있는 것처럼 와일드카드 문자(`*`)를 사용하여 필요한 권한을 추가할 수 있습니다.
   + **로깅 역할**(옵션) - CloudWatch 로그에 이벤트를 푸시하는 데 사용할 커넥터의 IAM 역할을 선택합니다.

1. **AS2 구성** 섹션에서 로컬 및 파트너 프로필, 암호화 및 서명 알고리즘, 전송된 정보의 압축 여부를 선택합니다. 다음 사항에 유의하세요.
   + **S3 콘텐츠 유형 보존** 파라미터는 기본적으로 활성화되어 있습니다.

     설정하면 Transfer Family는 파일 확장명을 기반으로 콘텐츠 유형을 매핑`Content-Type`하는 대신 S3의 객체와 연결된 Amazon S3를 사용합니다. 서비스가 S3 객체의 콘텐츠 유형을 사용하는 대신 파일 확장명을 기반으로 AS2 메시지의 콘텐츠 유형을 매핑하도록 하려면이 설정을 선택 취소합니다.
   + 암호화 알고리즘의 경우 취약한 암호화 알고리즘이므로 필요한 레거시 클라이언트를 지원해야 하는 `DES_EDE3_CBC` 경우가 아니면를 선택하지 마십시오.
   + **주제**는 커넥터와 함께 전송되는 AS2 메시지의 `subject` HTTP 헤더 속성으로 사용됩니다.
   + 암호화 알고리즘 없이 커넥터를 생성하도록 선택한 경우를 프로토콜`HTTPS`로 지정해야 합니다.

1. **기본 인증** 섹션에서 다음 정보를 지정합니다.
   + 아웃바운드 메시지와 함께 로그온 자격 증명을 보내려면 **기본 인증 활성화**를 선택합니다. 아웃바운드 메시지와 함께 자격 증명을 보내지 않으려면 **기본 인증 활성화**를 선택 취소하세요.
   + 인증을 사용하는 경우 암호를 선택하거나 생성하세요.
     + 새 암호를 만들려면 **새 암호 생성**을 선택한 다음 사용자 이름과 암호를 입력합니다. 이러한 자격 증명은 파트너의 엔드포인트에 연결하는 사용자와 일치해야 합니다.  
![\[AWS Transfer Family 콘솔의 커넥터 생성 페이지에 새 보안 암호 생성이 선택된 기본 인증 섹션이 표시됩니다.\]](http://docs.aws.amazon.com/ko_kr/transfer/latest/userguide/images/as2-basic-auth-create-secret.png)
     + 암호를 사용하려면 **기존 암호 선택**을 선택한 후 드롭다운 메뉴에서 암호를 선택합니다. Secrets Manager에서 올바른 형식의 암호를 만드는 방법에 대한 자세한 설명은 [AS2 커넥터에 대한 기본 인증을 활성화합니다.](#as2-secret-create) 섹션을 참조하세요.  
![\[AWS Transfer Family 콘솔의 커넥터 생성 페이지에 기존 보안 암호 선택이 선택된 기본 인증 섹션이 표시됩니다.\]](http://docs.aws.amazon.com/ko_kr/transfer/latest/userguide/images/as2-basic-auth-select-secret.png)

1. **MDN 구성** 섹션에서 다음 정보를 지정합니다.
   + **MDN 요청** - 거래 파트너가 AS2를 통해 메시지를 성공적으로 수신한 후 MDN을 보내도록 요청할 수 있습니다.
   + **서명된 MDN** - MDN에 서명을 요구하는 옵션이 있습니다. 이 옵션은 **MDN 요청**을 선택한 경우에만 사용할 수 있습니다.

1. 모든 설정을 확인한 후 ** AS2 커넥터 생성을** 선택하여 커넥터를 생성합니다.

새 **커넥터**의 ID가 목록에 추가된 커넥터 페이지가 나타납니다. 커넥터에 대한 세부 정보를 보려면 [AS2 커넥터 세부 정보 보기](#connectors-view-info) 섹션을 참조하세요.

## AS2 커넥터 알고리즘
<a name="as2-connectors-details"></a>

AS2 커넥터를 생성하면 다음 보안 알고리즘이 커넥터에 연결됩니다.


| Type | Algorithm | 
| --- | --- | 
| TLS 암호 | TLS\$1ECDHE\$1ECDSA\$1WITH\$1AES\$1128\$1GCM\$1SHA256 TLS\$1ECDHE\$1RSA\$1WITH\$1AES\$1128\$1GCM\$1SHA256 TLS\$1ECDHE\$1ECDSA\$1WITH\$1AES\$1128\$1CBC\$1SHA256 TLS\$1ECDHE\$1RSA\$1WITH\$1AES\$1128\$1CBC\$1SHA256 TLS\$1ECDHE\$1ECDSA\$1WITH\$1AES\$1256\$1GCM\$1SHA384 TLS\$1ECDHE\$1RSA\$1WITH\$1AES\$1256\$1GCM\$1SHA384 TLS\$1ECDHE\$1ECDSA\$1WITH\$1AES\$1256\$1CBC\$1SHA384 TLS\$1ECDHE\$1RSA\$1WITH\$1AES\$1256\$1CBC\$1SHA384 | 

## AS2 커넥터의 기본 인증
<a name="as2-basic-auth"></a>

AS2 프로토콜을 사용하는 Transfer Family 서버를 만들거나 업데이트할 때 아웃바운드 메시지에 대한 기본 인증을 추가할 수 있습니다. 커넥터에 인증 정보를 추가하여 이 작업을 수행합니다.

**참고**  
기본 인증은 HTTPS를 사용하는 경우에만 사용할 수 있습니다.

커넥터에 인증을 사용하려면 **기본 인증** 섹션에서 **기본 인증 활성화**를 선택합니다. 기본 인증을 활성화한 후 새 비밀을 생성하거나 기존 비밀을 사용할 수 있습니다. 어느 경우든 비밀의 자격 증명은 이 커넥터를 사용하는 아웃바운드 메시지와 함께 전송됩니다. 자격 증명은 거래 파트너의 원격 엔드포인트에 연결하려는 사용자와 일치해야 합니다.

다음 스크린샷은 **기본 인증 활성화**를 선택하고 **새 비밀 만들기**를 선택한 것을 보여줍니다. 이러한 선택을 한 후 비밀에 대한 사용자 이름과 암호를 입력할 수 있습니다.

![\[Transfer Family 콘솔 커넥터 페이지에는 커넥터에 대한 메시지 인증 정보가 표시됩니다. 이 경우 기본 인증 활성화가 선택되고 새 비밀 만들기가 선택됩니다.\]](http://docs.aws.amazon.com/ko_kr/transfer/latest/userguide/images/as2-basic-auth-create-secret.png)


다음 스크린샷은 **기본 인증 활성화**를 선택하고 **기존 비밀을 선택**한 것을 보여줍니다. 비밀은 [AS2 커넥터에 대한 기본 인증을 활성화합니다.](#as2-secret-create)에 설명된 대로 올바른 형식이어야 합니다.

![\[Transfer Family 콘솔 커넥터 페이지에는 커넥터에 대한 메시지 인증 정보가 표시됩니다. 이 경우 기본 인증 활성화가 선택되고 기존 비밀 선택이 선택됩니다.\]](http://docs.aws.amazon.com/ko_kr/transfer/latest/userguide/images/as2-basic-auth-select-secret.png)


## AS2 커넥터에 대한 기본 인증을 활성화합니다.
<a name="as2-secret-create"></a>

AS2 커넥터에 대한 기본 인증을 활성화하면 Transfer Family 콘솔에서 새 암호를 만들거나 AWS Secrets Manager에서 만든 암호를 사용할 수 있습니다. 어느 경우든 암호는 Secrets Manager에 저장됩니다.

**Topics**
+ [콘솔을 사용하여 새 암호 생성](#as2-secret-details-console)
+ [기존 암호 사용](#use-existing-secret)
+ [에서 보안 암호 생성 AWS Secrets Manager](#as2-secret-details-asm)

### 콘솔을 사용하여 새 암호 생성
<a name="as2-secret-details-console"></a>

콘솔에서 커넥터를 만들 때 새 암호를 생성할 수 있습니다.

새 암호를 만들려면 **새 암호 생성**을 선택한 다음 사용자 이름과 암호를 입력합니다. 이러한 자격 증명은 파트너의 엔드포인트에 연결하는 사용자와 일치해야 합니다.

![\[AWS Transfer Family 콘솔 커넥터 생성 페이지에 새 보안 암호 생성이 선택된 기본 인증 섹션이 표시됩니다.\]](http://docs.aws.amazon.com/ko_kr/transfer/latest/userguide/images/as2-basic-auth-create-secret.png)


**참고**  
콘솔에서 새 암호를 만들면 암호의 명칭은 **/aws/transfer/*connector-id***과 같은 명명 규칙을 따릅니다. 여기서 *connector-id*는 만들려는 커넥터의 ID입니다. AWS Secrets Manager에서 암호를 찾으려고 할 때는 이 점을 고려하세요.

### 기존 암호 사용
<a name="use-existing-secret"></a>

콘솔에서 커넥터를 만들 때 기존 암호를 지정할 수 있습니다.

암호를 사용하려면 **기존 암호 선택**을 선택한 후 드롭다운 메뉴에서 암호를 선택합니다. Secrets Manager에서 올바른 형식의 암호를 만드는 방법에 대한 자세한 설명은 [에서 보안 암호 생성 AWS Secrets Manager](#as2-secret-details-asm) 섹션을 참조하세요.

![\[AWS Transfer Family 콘솔 커넥터 생성 페이지에 기존 보안 암호 선택이 선택된 기본 인증 섹션이 표시됩니다.\]](http://docs.aws.amazon.com/ko_kr/transfer/latest/userguide/images/as2-basic-auth-select-secret.png)


### 에서 보안 암호 생성 AWS Secrets Manager
<a name="as2-secret-details-asm"></a>

다음 절차는 AS2 커넥터에 사용할 적절한 암호를 만드는 방법을 설명합니다.

**참고**  
기본 인증은 HTTPS를 사용하는 경우에만 사용할 수 있습니다.<a name="as2-auth-secret-key"></a>

**AS2 Basic 인증을 위해 Secrets Manager에 사용자 자격 증명을 저장하려면**

1. 에 로그인 AWS Management Console 하고 [https://console.aws.amazon.com/secretsmanager/](https://console.aws.amazon.com/secretsmanager/) AWS Secrets Manager 콘솔을 엽니다.

1. 왼쪽 탐색 창에서 **암호**를 선택합니다.

1. **암호** 페이지에서 **새 암호 저장**을 선택합니다.

1. **암호 선택** 페이지의 **암호 타입**에서 **다른 타입의 암호**를 선택합니다.

1. **키/값 쌍** 섹션에서 **키/값** 탭을 선택합니다.
   + **키** - **Username**를 입력합니다.
   + **값** - 파트너 서버에 연결할 권한이 있는 사용자의 이름을 입력합니다.

1. 암호를 제공하려면 **행 추가**를 선택하고 **키/값 쌍** 섹션에서 **키/값** 탭을 선택합니다.

   **행 추가**를 선택하고 **키/값 쌍** 섹션에서 **키/값** 탭을 선택합니다.
   + **키** - **Password**를 입력합니다.
   + **값** – 사용자의 암호를 입력합니다.

1. 프라이빗 키를 제공하려면 **행 추가**를 선택하고 **키/값 쌍** 섹션에서 **키/값** 탭을 선택합니다.
   + **키** - **PrivateKey**를 입력합니다.
   + **값** - 사용자의 프라이빗 키를 입력합니다. 이 값은 OpenSSH 형식으로 저장되어야 하며 원격 서버에 이 사용자에 대해 저장된 퍼블릭 키와 일치해야 합니다.

1. **다음**을 선택합니다.

1. **암호 구성** 페이지에 암호를 위한 명칭과 설명을 입력합니다. 이름에 **aws/transfer/**이라는 접두사를 사용하는 것이 좋습니다. 예컨대, 암호 **aws/transfer/connector-1**을 지정할 수 있습니다.

1. **다음**을 선택한 후 **교체 구성** 페이지의 기본값을 그대로 사용합니다. 그 다음 **다음**을 선택합니다.

1. **검토** 페이지에서 **저장**을 선택하여 암호를 만들고 저장합니다.

암호를 만든 후 커넥터를 만들 때 암호를 선택할 수 있습니다([AS2 커넥터 구성](#configure-as2-connector) 참조). 기본 인증을 활성화하는 단계에서 사용 가능한 암호의 드롭다운 목록에서 암호를 선택합니다.

## AS2 커넥터 세부 정보 보기
<a name="connectors-view-info"></a>

 AWS Transfer Family 콘솔에서 AS2 AWS Transfer Family 커넥터에 대한 세부 정보 및 속성 목록을 찾을 수 있습니다. AS2 커넥터의 속성에는 URL, 역할, 프로필, MDN, 태그 및 모니터링 지표가 포함됩니다.

이것은 커넥터 세부 정보 보기 절차입니다.

**커넥터 세부 정보를 보려면**

1. [https://console.aws.amazon.com/transfer/](https://console.aws.amazon.com/transfer/) AWS Transfer Family 콘솔을 엽니다.

1. 왼쪽 탐색 창에서 **커넥터**를 선택합니다.

1. **커넥터 ID** 열에서 식별자를 선택하면 선택한 커넥터의 세부 정보 페이지가 표시됩니다.

**편집**을 선택하여 커넥터의 세부 정보 페이지에서 AS2 커넥터의 속성을 변경할 수 있습니다.

![\[Transfer Family 콘솔 커넥터 세부 정보 페이지에는 선택한 커넥터의 URL, 액세스 역할 및 로깅 역할이 표시됩니다.\]](http://docs.aws.amazon.com/ko_kr/transfer/latest/userguide/images/as2-connector-details_01-top.png)


![\[Transfer Family 콘솔 커넥터 세부 정보 페이지에는 선택한 커넥터의 AS2 구성 세부 정보가 표시됩니다.\]](http://docs.aws.amazon.com/ko_kr/transfer/latest/userguide/images/as2-connector-details_02-middle.png)


![\[Transfer Family 콘솔 커넥터 세부 정보 페이지에는 선택한 커넥터에 대한 AS2 기본 인증 섹션 세부 정보, 태그, 정적 IP 및 AS2 모니터링 정보가 표시됩니다.\]](http://docs.aws.amazon.com/ko_kr/transfer/latest/userguide/images/as2-basic-auth-details-pane.png)


**참고**  
다음 AWS Command Line Interface (AWS CLI 명령:  

```
aws transfer describe-connector --connector-id your-connector-id
```
자세한 내용은 API 참조의 [https://docs.aws.amazon.com/transfer/latest/APIReference/API_DescribeConnector.html](https://docs.aws.amazon.com/transfer/latest/APIReference/API_DescribeConnector.html)를 참조하세요.

# AS2 메시지 전송 및 수신
<a name="send-as2-messages"></a>

이 섹션에서는 AS2 메시지를 보내고 받는 프로세스를 설명합니다. 또한 AS2 메시지와 연결된 파일 이름 및 위치에 대한 세부 정보도 제공합니다.

다음 표에는 AS2 메시지에 사용 가능한 암호화 알고리즘과 이를 사용할 수 있는 시기가 나와 있습니다.


| 암호화 알고리즘 | HTTP | HTTPS | 참고 | 
| --- |--- |--- |--- |
| AES128\$1CBC | Yes | Yes |  | 
| AES192\$1CBC | Yes | Yes |  | 
| AES256\$1CBC | Yes | Yes |  | 
| DES\$1EDE3\$1CBC | 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). | 

**Topics**
+ [AS2 메시지 프로세스 수신](#as2-inbound-process)
+ [HTTPS를 통한 AS2 메시지 전송 및 수신](#as2-https-process)
+ [AS2 커넥터를 사용하여 파일 전송](#transfer-as2-connectors)
+ [파일 이름 및 위치](#file-names-as2)
+ [상태 코드](#status-codes)
+ [샘플 JSON 파일](#file-as2-json)

## AS2 메시지 프로세스 수신
<a name="as2-inbound-process"></a>

인바운드 프로세스는 AWS Transfer Family 서버로 전송되는 메시지 또는 파일로 정의됩니다. 인바운드 메시지의 순서는 다음과 같습니다.

1. 관리자 또는 자동 프로세스는 파트너의 원격 AS2 서버에서 AS2 파일 전송을 시작합니다.

1. 파트너의 원격 AS2 서버가 파일 내용에 서명하고 암호화한 다음 Transfer Family에서 호스팅되는 AS2 인바운드 엔드포인트에 HTTP POST 요청을 보냅니다.

1. Transfer Family는 서버, 파트너, 인증서 및 계약에 대해 구성된 값을 사용하여 AS2 페이로드를 복호화하고 확인합니다. 파일 콘텐츠는 구성된 Amazon S3 파일 스토어에 저장됩니다.

1. 서명된 MDN 응답은 HTTP 응답과 함께 인라인으로 반환되거나 별도의 HTTP POST 요청을 통해 비동기적으로 소스 서버로 반환됩니다.

1. 감사 추적은 거래소에 대한 세부 정보와 함께 Amazon CloudWatch에 작성됩니다.

1. 암호가 복호화된 파일은 `inbox/processed`라는 폴더에서 사용할 수 있습니다.

![\[인바운드 메시지의 처리 순서를 보여 주는 다이어그램.\]](http://docs.aws.amazon.com/ko_kr/transfer/latest/userguide/images/as2-architecture-inbound.png)


## HTTPS를 통한 AS2 메시지 전송 및 수신
<a name="as2-https-process"></a>

이 섹션에서는 AS2 프로토콜을 사용하여 HTTPS를 통해 메시지를 보내고 받는 Transfer Family 서버를 구성하는 방법에 대해 설명합니다.

**Topics**
+ [HTTPS를 통해 AS2 메시지를 보냅니다.](#send-https)
+ [HTTPS를 통해 AS2 메시지를 받습니다.](#receive-https)

### HTTPS를 통해 AS2 메시지를 보냅니다.
<a name="send-https"></a>

HTTPS를 사용하여 AS2 메시지를 보내려면 다음 정보가 포함된 커넥터를 만드세요.
+ URL의 경우 HTTPS URL을 지정하세요.
+ 암호화 알고리즘에서 사용 가능한 알고리즘을 선택합니다.
**참고**  
 암호화를 사용하지 않고 Transfer Family 서버로 메시지를 보내려면(즉, 암호화 알고리즘`NONE`으로 선택) Application Load Balancer(ALB)를 사용해야 합니다.
+ [AS2 커넥터 구성](configure-as2-connector.md)에 설명된 대로 커넥터의 나머지 값을 입력합니다.

### HTTPS를 통해 AS2 메시지를 받습니다.
<a name="receive-https"></a>

 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를 종료할 때의 기능 차이점이 나와 있습니다.


| 기능 | Network Load Balancer(NLB) | Application Load Balancer(ALB) | 
| --- | --- | --- | 
| Latency | 네트워크 계층에서 작동할 때 지연 시간이 줄어듭니다. | 애플리케이션 계층에서 작동할 때 지연 시간이 더 깁니다. | 
| 고정 IP 지원 | 정적일 수 있는 탄력적 IP 주소를 연결할 수 있습니다. | 탄력적 IP 주소를 연결할 수 없음:는 기본 IP 주소가 변경될 수 있는 도메인을 제공합니다. | 
| 고급 라우팅 | 고급 라우팅을 지원하지 않습니다. | 고급 라우팅을 지원합니다. 암호화 없이 AS2에 필요한 `X-Forwarded-Proto` 헤더를 주입할 수 있습니다. 이 헤더는 [developer.mozilla.org](https://developer.mozilla.org/) 웹 사이트의 [X-Forwarded-Proto](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Forwarded-Proto)에 설명되어 있습니다. | 
| TLS/SSL 종료 | TLS/SSL 종료 지원 | TLS/SSL 종료 지원 | 
| 상호 TLS(mTLS) | Transfer Family는 현재 mTLS용 NLB 사용을 지원하지 않습니다. | mTLS 지원 | 

------
#### [ Configure NLB ]

이 절차에서는 VPC에서 인터넷 경계 Network Load Balancer(NLB)를 설정하는 방법을 설명합니다.<a name="create-nlb-AS2"></a>

**Network Load Balancer를 생성하고 서버의 VPC 엔드포인트를 로드 밸런서의 대상으로 정의하려면**

1. [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/)에서 Amazon Elastic Compute Cloud 콘솔을 엽니다.

1. 탐색 창에서, **로드 밸런서**를 선택한 다음, **로드 밸런서 만들기**를 선택합니다.

1. **Network Load Balancer**에서 [**생성(Create)**]을 선택합니다.

1. **기본 구성** 섹션에서 다음 정보를 입력합니다.
   + **이름**에 로드 밸런서를 설명하는 이름을 입력합니다.
   + **체계**에서 **인터넷 연결** 을 선택합니다.
   + **IP 주소 타입**에서 **Ipv4**를 선택합니다.

1. **네트워크 맵핑** 섹션에서 다음 정보를 입력합니다.
   + **VPC**의 경우 생성한 Virtual Private Cloud(VPC)를 선택합니다.
   + **매핑**아래에서 서버 엔드포인트에서 사용하는 것과 동일한 VPC에서 사용할 수 있는 퍼블릭 서브넷과 연결된 가용 영역을 선택합니다.
   + 각 서브넷의 **IPv4 주소**에 대해 할당한 탄력적 IP 주소 중 하나를 선택합니다.

1. **리스너 및 라우팅** 섹션에서 다음 정보를 입력합니다.
   + **프로토콜**에서 **TCP**를 선택합니다.
   + **포트**에서 **5080**를 입력합니다.
   + **기본 작업**, **대상 그룹 생성**을 선택합니다. 새 대상 그룹을 만드는 세부 사항에 대한 자세한 내용은 [대상 그룹 생성](#create-target-group)을 참조하세요.

   대상 그룹을 생성한 후 **기본 작업** 필드에 해당 이름을 입력합니다.

1. **보안 리스너 설정** 섹션에서 **기본 SSL/TLS 인증서** 영역에서 인증서를 선택합니다.

1. **로드밸런서 만들기**를 선택해서 사용자의 NLB를 생성합니다.

1. (옵션이지만 권장됨)[Network Load Balancer의 액세스 로그](https://docs.aws.amazon.com/elasticloadbalancing/latest/network/load-balancer-access-logs.html)에 설명된 대로 Network Load Balancer의 액세스 로그를 켜서 전체 감사 추적을 유지하세요.

   NLB에서 TLS 연결이 종료되므로 이 단계를 사용하는 것이 좋습니다. 따라서 Transfer Family AS2 CloudWatch 로그 그룹에 반영되는 소스 IP 주소는 거래 파트너의 외부 IP 주소가 아니라 NLB의 사설 IP 주소입니다.

------
#### [ Configure ALB ]

이 절차에서는 VPC에서 Application Load Balancer(ALB)를 설정하는 방법을 설명합니다.<a name="create-alb-AS2"></a>

**Application Load Balancer를 생성하고 서버의 VPC 엔드포인트를 로드 밸런서의 대상으로 정의하려면**

1. [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/)에서 Amazon Elastic Compute Cloud 콘솔을 엽니다.

1. 탐색 창에서, **로드 밸런서**를 선택한 다음, **로드 밸런서 만들기**를 선택합니다.

1. **Application Load Balancer** 아래에서 **생성(Create)**을 선택합니다.

1. ALB 콘솔에서 포트 443(HTTPS)에 새 HTTP 리스너를 생성합니다.

1. (선택 사항). 상호 인증(mTLS)을 설정하려면 보안 설정과 트러스트 스토어를 구성합니다.

   1. SSL/TLS 인증서를 리스너에 연결합니다.

   1. **클라이언트 인증서 처리**에서 **상호 인증(mTLS)**을 선택합니다.

   1. **트러스트 스토어로 확인을** 선택합니다.

   1. **고급 mTLS 설정**에서 CA 인증서를 업로드하여 트러스트 스토어를 선택하거나 생성합니다.

1. 새 대상 그룹을 생성하고 Transfer Family AS2 서버 엔드포인트의 프라이빗 IP 주소를 포트 5080의 대상으로 추가합니다. 새 대상 그룹을 만드는 세부 사항에 대한 자세한 내용은 [대상 그룹 생성](#create-target-group)을 참조하세요.

1. 포트 5080에서 HTTP 프로토콜을 사용하도록 대상 그룹에 대한 상태 확인을 구성합니다.

1. 리스너에서 대상 그룹으로 HTTPS 트래픽을 전달하는 새 규칙을 생성합니다.

1. SSL/TLS 인증서를 사용하도록 리스너를 구성합니다.

------

로드 밸런서를 설정하고 나면 클라이언트는 사용자 지정 포트 리스너를 통해 로드 밸런서와 통신합니다. 그러면 로드 밸런서가 포트 5080을 통해 서버와 통신합니다.<a name="create-target-group"></a>

**대상 그룹 생성**

1. 이전 절차에서 **대상 그룹 만들기**를 선택하면 새 대상 그룹에 대한 **그룹 세부 정보 지정** 페이지로 이동합니다.

1.  **기본 구성** 섹션에서, 다음 정보를 입력합니다.
   + **대상 타입 선택에서** **IP 주소**를 선택합니다.
   + **대상 그룹 이름**에 대상 그룹의 이름을 입력합니다.
   + **프로토콜**의 경우 선택은 ALB를 사용하는지 NLB를 사용하는지에 따라 달라집니다.
     + Network Load Balancer(NLB)의 경우 **TCP**를 선택합니다.
     + Application Load Balancer(ALB)의 경우 **HTTP**를 선택합니다.
   + **포트**에서 **5080**를 입력합니다.
   + **IP 주소 **타입에서 **Ipv4**를 선택합니다.
   + **VPC** 에서 Transfer Family AS2 서버용으로 생성한 VPC를 선택합니다.

1. <a name="vpc-register-targets"></a>**상태 확인** 섹션에서 **상태 확인 프로토콜을** 선택합니다.
   + ALB의 경우 **HTTP**를 선택합니다.
   + NLB의 경우 **TCP**를 선택합니다.

1. <a name="vpc-add-to-list"></a>**다음**을 선택합니다.

1. **대상 등록** 페이지에서 다음 정보를 입력합니다.
   + **네트워크**의 경우, Transfer Family AS2 서버용으로 만든 VPC가 지정되었는지 확인합니다.
   + **IPv4 주소**에 Transfer Family AS2 서버 엔드포인트의 프라이빗 IPv4 주소를 입력합니다.

      서버에 엔드포인트가 두 개 이상 있는 경우, **IPv4 주소 추가**를 선택하여 다른 IPv4 주소를 입력하는 행을 하나 더 추가합니다. 모든 서버 엔드포인트의 사설 IP 주소를 입력할 때까지 이 프로세스를 반복합니다.
   + **Ports**가 **5080**로 설정되어 있는지 확인하세요.
   + **아래 보류 중인 항목으로 포함**을 선택하여 항목을 **대상 검토** 섹션에 추가하세요.

1. **대상 검토** 섹션에서 IP 대상을 검토하세요.

1. **대상 그룹 생성**을 선택한 다음 이전 NLB 생성 절차로 돌아가 표시된 위치에 새 대상 그룹을 입력합니다.

**탄력적 IP 주소에서 서버 액세스 테스트**

Network Load Balancer의 엘라스틱 IP 주소 또는 DNS 이름을 사용하여 사용자 지정 포트를 통해 서버에 연결합니다.

**중요**  
로드 밸런서에 구성된 서브넷의 [네트워크 액세스 제어 목록(네트워크 ACL)](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-network-acls.html)를 사용하여 클라이언트 IP 주소를 통한 서버 액세스를 관리합니다. 네트워크 ACL 권한은 서브넷 수준에서 설정되므로 해당 서브넷을 사용하는 모든 리소스에 규칙이 적용됩니다. 로드 밸런서의 대상 타입이 **인스턴스**가 아닌**IP 주소** 로 설정되어 있기 때문에 보안 그룹을 사용하여 클라이언트 IP 주소에서의액세스를 제어할 수 없습니다. 따라서 로드 밸런서는 원본 IP 주소를 보존하지 않습니다. [Network Load Balancer의 상태 확인이](https://docs.aws.amazon.com/elasticloadbalancing/latest/network/target-group-health-checks.html) 실패하면 로드 밸런서가 서버 엔드포인트에 연결할 수 없다는 의미입니다. 이 문제를 해결하려면 다음을 확인 하세요.  
서버 [엔드포인트의 관련 보안 그룹](https://aws.amazon.com/premiumsupport/knowledge-center/sftp-enable-elastic-ip-custom-port/)이 로드 밸런서에 구성된 서브넷으로부터의 인바운드 연결을 허용하는지 확인하세요. 로드 밸런서는 포트 5080을 통해 서버 엔드포인트에 연결할 수 있어야 합니다.
서버 **상태**가 **온라인**인지 확인합니다.

## AS2 커넥터를 사용하여 파일 전송
<a name="transfer-as2-connectors"></a>

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

AS2 커넥터 세부 정보를 보려면 [AS2 커넥터 세부 정보 보기](configure-as2-connector.md#connectors-view-info) 섹션을 참조하세요. AS2 생성에 대한 자세한 설명은 [AS2 커넥터 구성](configure-as2-connector.md) 섹션을 참조하세요.

**AS2 아웃바운드 메시지를 보내려면**

아웃바운드 프로세스는에서 AWS 외부 클라이언트 또는 서비스로 전송되는 메시지 또는 파일로 정의됩니다. 아웃바운드 메시지의 순서는 다음과 같습니다.

1. 관리자가 `start-file-transfer` AWS Command Line Interface (AWS CLI) 명령 또는 `StartFileTransfer` API 작업을 호출합니다. 이 작업은 `connector` 구성을 참조합니다.

1. Transfer Family는 새 파일 요청을 감지하고 파일을 찾습니다. 파일은 압축, 서명 및 암호화됩니다.

1. 전송 HTTP 클라이언트는 HTTP POST 요청을 수행하여 페이로드를 파트너의 AS2 서버로 전송합니다.

1. 프로세스는 HTTP 응답(동기 MDN)과 함께 서명된 MDN 응답을 반환합니다.

1. 파일이 여러 전송 단계 사이를 이동할 때 프로세스는 MDN 응답 수신 및 처리 세부 정보를 고객에게 전달합니다.

1. 원격 AS2 서버는 복호화되고 검증된 파일을 파트너 관리자가 사용할 수 있도록 합니다.

![\[아웃바운드 메시지의 처리 순서를 보여주는 다이어그램.\]](http://docs.aws.amazon.com/ko_kr/transfer/latest/userguide/images/as2-architecture-outbound.png)


AS2 처리는 일반적인 사용 사례 및 기존 AS2 지원 서버 구현과의 통합에 중점을 두고 많은 RFC 4130 프로토콜을 지원합니다. 지원되는 구성에 대한 자세한 설명은 [AS2 구성](create-b2b-server.md#as2-supported-configurations) 섹션을 참조하세요.

## 파일 이름 및 위치
<a name="file-names-as2"></a>

이 섹션에서는 AS2 전송에 대한 파일 이름 지정 규칙에 대해 설명합니다.

인바운드 파일 전송에 대해 다음 사항을 참조하세요.
+ 계약서에 기본 디렉터리를 지정합니다. 기본 디렉터리는 접두사(있는 경우)와 결합된 Amazon S3 버킷 이름입니다. 예를 들어 `/amzn-s3-demo-bucket/AS2-folder`입니다.
+ 수신 파일이 성공적으로 처리되면 파일(및 해당 JSON 파일)이 `/processed` 폴더에 저장됩니다. 예를 들어 `/amzn-s3-demo-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` 폴더에 저장됩니다. 예를 들어 `/amzn-s3-demo-bucket/AS2-folder/failed`입니다.
+ 전송된 파일은 `processed` 폴더에 `original_filename.messageId.original_extension`로 저장됩니다. 즉, 전송 메시지 ID가 파일 이름에 원래 확장명 앞에 추가됩니다.
+ JSON 파일이 생성되고 `original_filename.messageId.original_extension.json`로 저장됩니다. 메시지 ID가 추가될 뿐 아니라 전송된 파일 이름에도 문자열 `.json`이 추가됩니다.
+ 메시지 처리 알림(MDN) 파일이 생성되어 `original_filename.messageId.original_extension.mdn`로 저장됩니다. 메시지 ID가 추가될 뿐 아니라 전송된 파일 이름에도 문자열 `.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 로그를 확인하여 실패한 전송을 포함한 전송의 세부 정보를 볼 수 있습니다.

## 상태 코드
<a name="status-codes"></a>

다음 표에는 사용자 또는 파트너가 AS2 메시지를 보낼 때 CloudWatch 로그에 로깅할 수 있는 모든 상태 코드가 나열되어 있습니다. 다양한 메시지 처리 단계는 다양한 메시지 유형에 적용되며 모니터링 전용입니다. COMPLETED 및 FAILED 상태는 처리의 마지막 단계를 나타내며 JSON 파일에 표시됩니다.


****  

| 코드 | 설명 | 처리가 완료되었나요? | 
| --- | --- | --- | 
| 처리 | 메시지가 최종 형식으로 변환되는 중입니다. 예를 들어 압축 해제 및 복호화 단계 모두이 상태입니다. | 아니요 | 
| MDN\$1TRANSMIT | 메시지 처리가 MDN 응답을 전송하는 중입니다. | 아니요 | 
| MDN\$1RECEIVE | 메시지 처리가 MDN 응답을 수신하고 있습니다. | 아니요 | 
| COMPLETED | 메시지 처리가 성공적으로 완료되었습니다. 이 상태에는 인바운드 메시지 또는 아웃바운드 메시지의 MDN 확인을 위해 MDN이 전송되는 경우가 포함됩니다. | 예 | 
| FAILED | 메시지 처리에 실패했습니다. 오류 코드 목록은 섹션을 참조하세요[AS2 오류 코드](as2-monitoring.md#as2-error-codes). | 예 | 

## 샘플 JSON 파일
<a name="file-as2-json"></a>

이 섹션에는 성공적인 전송과 실패한 전송을 위한 샘플 파일을 포함하여 인바운드 및 아웃바운드 전송에 대한 샘플 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"
}
```

# AS2 메시지에 대한 HTTP 헤더 사용자 지정
<a name="as2-custom-http-headers"></a>

거래 파트너에게 AS2 메시지를 보낼 때 특정 요구 사항을 충족하거나 파트너의 AS2 서버 구성과의 호환성을 향상하도록 HTTP 헤더를 사용자 지정해야 할 수 있습니다. 이 CloudFormation 템플릿은 전송되는 AS2 메시지에 대해 사용자 지정 HTTP 헤더를 활성화하는 인프라를 생성합니다 AWS Transfer Family. Amazon API Gateway 및 Lambda 함수가 프록시 역할을 하도록 설정하여 거래 파트너의 AS2 서버에 필요한 헤더를 동적으로 수정할 수 있습니다.

이 템플릿을 사용하여 다음을 수행합니다.
+ 아웃바운드 AS2 메시지에 사용자 지정 HTTP 헤더 추가
+ 기본 헤더 값을 사용자 지정 값으로 재정의
**중요**  
기본 헤더 값을 재정의할 때는 전송 실패를 일으킬 수 있으므로 주의해야 합니다. 일부 AS2 헤더가 필요합니다.
+ 특정 헤더 요구 사항이 있는 거래 파트너와의 호환성 보장

## 템플릿 개요
<a name="template-overview"></a>

템플릿은 다음과 같은 주요 구성 요소를 생성합니다.
+ AS2 메시지를 처리하고 전달하는 Lambda 함수
+ Lambda 함수를 노출하는 Amazon API Gateway 
+ Lambda 함수에 대한 IAM 역할 및 권한
+ HTTPS 지원을 위한 조건부 리소스

템플릿 파일은 [동적 HTTP 헤더 템플릿에서 사용할 수 있습니다](https://s3.amazonaws.com/aws-transfer-resources/as2-templates/dynamic-http-headers.template.yml).

## 작동 방식
<a name="how-it-works"></a>

1. Amazon API Gateway는 수신 AS2 메시지를 수신합니다 AWS Transfer Family.

1. 요청은 Lambda 함수로 전달됩니다.

1. Lambda 함수는 요청을 처리하여 필요에 따라 헤더를 추가하거나 수정합니다.

1. 그런 다음 수정된 요청이 파트너의 AS2 서버로 전달됩니다.

1. 파트너 서버의 응답은 Lambda 및 Amazon API Gateway를 통해 반환됩니다 AWS Transfer Family.

## 주요 기능
<a name="key-features"></a>
+ *동적 헤더 수정:* 제목 헤더를 사용자 지정하고 기타 필수 헤더를 추가할 수 있습니다.
+ *프로토콜 지원:* HTTP 및 HTTPS 프로토콜 모두에서 작동합니다.
+ *유연한 구성:* 파트너 호스트, 포트 및 경로의 사양을 허용합니다.

## 구현 세부 정보
<a name="implementation-details"></a>

템플릿은 다음과 같은 주요 구성 요소를 구현합니다.

### Lambda 함수
<a name="lambda-function"></a>

솔루션의 핵심은 다음과 같은 Node.js Lambda 함수입니다.
+ Amazon API Gateway에서 요청을 수신합니다.
+ 구성 및 수신 요청 데이터를 기반으로 헤더를 수정합니다.
+ 수정된 요청을 파트너의 AS2 서버로 전달합니다.
+ HTTP 및 HTTPS 프로토콜 모두 처리
+ 오류 처리 및 로깅 포함

### Amazon API Gateway
<a name="api-gateway"></a>

HTTP API는 다음과 같이 설정됩니다.
+ 수신 AS2 메시지 수신
+ Lambda 함수로 요청 라우팅
+ 에 응답 반환 AWS Transfer Family

### 템플릿 파라미터
<a name="as2-header-template-parameter-details"></a>

다음과 같이 템플릿 파라미터에 대한 정보를 입력합니다. 이러한 모든 파라미터는 문자열입니다.
+ `Environment`:이 파라미터는 템플릿이 생성하는 리소스의 이름을 지정하는 데 사용됩니다. 개발 또는 프로덕션 환경을 위한 것인지 여부입니다. 유효한 값은 **dev** 및 **prod**입니다.
+ `PartnerHost`: AS2 파트너 서버의 IP 주소 또는 호스트 이름입니다.
+ `PartnerPort`: AS2 파트너 서버의 포트 번호입니다. 지정하지 않으면 기본값은 HTTP의 경우 80, HTTPS의 경우 443입니다.
+ `PartnerPath`: 파트너 서버의 AS2 엔드포인트 경로
+ `ProtocolType`: AS2 통신에 사용할 프로토콜: 유효한 값은 **HTTP** 및 **HTTPS**입니다.

### 조건부 리소스
<a name="conditional-resources"></a>

HTTPS 지원을 위해 템플릿은 조건부로 다음을 생성합니다.
+ CA 인증서용 Lambda 계층
+ Lambda 함수의 HTTPS별 구성

## 배포 및 사용
<a name="deployment-and-usage"></a>

**CloudFormation 템플릿을 사용하여 AS2 HTTP 헤더를 사용자 지정하려면**

1. [https://console.aws.amazon.com/cloudformation](https://console.aws.amazon.com/cloudformation/) CloudFormation 콘솔을 엽니다.

1. 왼쪽 탐색 창에서 **스택**을 선택합니다.

1. **스택 생성**을 선택한 다음 **새 리소스 사용(표준)**을 선택합니다.

1. **사전 조건 - 템플릿 준비** 섹션에서 **기존 템플릿 선택을** 선택합니다.

1. 이 링크인 [동적 HTTP 헤더 템플릿을](https://s3.amazonaws.com/aws-transfer-resources/as2-templates/dynamic-http-headers.template.yml) 복사하여 **Amazon S3 URL** 필드에 붙여 넣습니다.

1. **다음**을 선택합니다.

1. 파라미터 세부 정보를 정보로 입력합니다. 이는에 자세히 설명되어 있습니다[템플릿 파라미터](#as2-header-template-parameter-details).

1. **다음**을 선택합니다. **스택 옵션 구성**페이지에서 **다음**을 다시 선택합니다.

1. 생성 중인 스택의 세부 정보를 검토한 다음 **스택 생성**을 선택합니다.
**참고**  
페이지 하단의 **기능**에서가 AWS Identity and Access Management (IAM) 리소스를 생성할 CloudFormation 수 있음을 확인해야 합니다.

이 CloudFormation 스택을 배포한 후:

1. 스택 출력에 제공된 Amazon API Gateway 엔드포인트 URL을 기록해 둡니다.

1. 이 새 Amazon API Gateway 엔드포인트를 사용하도록 기존 AWS Transfer Family 커넥터를 업데이트합니다.

1. 이제 솔루션은 구성된 대로 헤더를 추가하거나 수정하여 AS2 메시지를 처리합니다.

**주의**  
제목 헤더만 수정하거나 파트너가 명시적으로 예상하는 헤더만 추가합니다. 다른 헤더를 변경하면 전송 실패가 발생할 수 있습니다.

# AS2 사용량 모니터링
<a name="as2-monitoring"></a>

Amazon CloudWatch 및를 사용하여 AS2 활동을 모니터링할 수 있습니다 AWS CloudTrail. 다른 Transfer Family 서버 지표(metrics)를 보려면 [AWS Transfer Family 서버에 대한 Amazon CloudWatch 로깅](structured-logging.md)을 참조하세요.


**AS2 지표**  

| 지표 | 설명 | 
| --- | --- | 
| InboundMessage |  거래 파트너로부터 성공적으로 수신한 AS2 메시지의 총 개수. 단위: 개 기간: 5분  | 
| InboundFailedMessage |  거래 파트너로부터 성공적으로 수신되지 못한 AS2 메시지의 총 개수. 즉, 거래 파트너가 메시지를 보냈지만 Transfer Family 서버가 메시지를 성공적으로 처리하지 못했습니다. 단위: 개 기간: 5분  | 
| OutboundMessage |  Transfer Family 서버에서 거래 파트너로 성공적으로 보낸 AS2 메시지의 총 개수입니다. 단위: 개 기간 = 5분  | 
| OutboundFailedMessage |  거래 파트너에게 성공적으로 전송되지 못한 AS2 메시지의 총 개수. 즉, Transfer Family 서버에서 전송되었지만 거래 파트너가 성공적으로 수신하지 못했습니다. 단위: 개 기간: 5분  | 
| DaysUntilExpiry |  가져올 때 인증서에 `InactiveDate` 설정된에 따라 인증서가 만료될 때까지의 일수입니다. 단위: 개 차원: `CertificateId`, `Description` (제공된 경우) 기간: 1일 자세한 내용은 [AS2 인증서 교체](managing-as2-partners.md#as2-certificate-rotation) 단원을 참조하십시오.  | 

## AS2 상태 코드
<a name="as2-monitor-status-codes"></a>

다음 표에는 사용자 또는 파트너가 AS2 메시지를 보낼 때 CloudWatch 로그에 로깅할 수 있는 모든 상태 코드가 나열되어 있습니다. 다양한 메시지 처리 단계는 다양한 메시지 유형에 적용되며 모니터링 전용입니다. COMPLETED 및 FAILED 상태는 처리의 마지막 단계를 나타내며 JSON 파일에 표시됩니다.


****  

| 코드 | 설명 | 처리가 완료되었나요? | 
| --- | --- | --- | 
| 처리 | 메시지가 최종 형식으로 변환되는 중입니다. 예를 들어 압축 해제 및 복호화 단계 모두이 상태입니다. | 아니요 | 
| MDN\$1TRANSMIT | 메시지 처리가 MDN 응답을 보내고 있습니다. | 아니요 | 
| MDN\$1RECEIVE | 메시지 처리가 MDN 응답을 수신하고 있습니다. | 아니요 | 
| COMPLETED | 메시지 처리가 성공적으로 완료되었습니다. 이 상태에는 인바운드 메시지 또는 아웃바운드 메시지의 MDN 확인을 위해 MDN이 전송되는 경우가 포함됩니다. | 예 | 
| FAILED | 메시지 처리에 실패했습니다. 오류 코드 목록은 단원을 참조하십시오[AS2 오류 코드](#as2-error-codes). | 예 | 

## AS2 오류 코드
<a name="as2-error-codes"></a>

다음 표에서는 AS2 파일 전송에서 수신할 수 있는 오류 코드를 나열하고 설명합니다.


**AS2 오류 코드**  

| 코드 | 오류 | 설명 및 해상도 | 
| --- | --- | --- | 
| ACCESS\$1DENIED |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/transfer/latest/userguide/as2-monitoring.html)  |  유효하지 않거나 형식이 `StartFileTransfer` 잘못된 요청을 처리할 때 발생합니다`SendFilePaths`. 즉, 경로에 Amazon S3 버킷 이름이 없거나 경로에 유효하지 않은 문자가 포함되어 있습니다. Transfer Family가 액세스 역할 또는 로깅 역할을 맡지 못하는 경우에도 발생합니다.경로에 유효한 Amazon S3 버킷과 키 이름이 포함되어 있는지 확인하세요. | 
| AGREEMENT\$1NOT\$1FOUND | 계약을 찾을 수 없습니다. | 계약을 찾을 수 없거나 계약이 비활성 프로필과 연결되어 있습니다.Transfer Family 서버 내에서 계약을 업데이트하여 활성 프로필을 포함하세요. | 
| CONNECTOR\$1NOT\$1FOUND | 커넥터 또는 관련 구성을 찾을 수 없습니다. |  커넥터를 찾을 수 없거나 커넥터가 비활성 프로필과 연결되어 있습니다. 활성 프로필을 포함하도록 커넥터를 업데이트하세요.  | 
| CREDENTIALS\$1RETRIEVAL\$1FAILED |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/transfer/latest/userguide/as2-monitoring.html)  |  AS2 Basic 인증의 경우 암호를 올바르게 형식화해야 합니다. 다음 해결 방법은 이전 열에 나열된 오류에 해당합니다. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/transfer/latest/userguide/as2-monitoring.html)  | 
| DECOMPRESSION\$1FAILED | 메시지 압축을 풀지 못했습니다. |  전송된 파일이 손상되었거나 압축 알고리즘이 유효하지 않습니다. 메시지를 다시 전송하고 ZLIB 압축이 사용되는지 확인하거나 압축을 사용하지 않고 메시지를 다시 보내세요.  | 
| DECRYPT\$1FAILED | 메시지 ID 메시지를 해독하지 못했습니다. 파트너가 올바른 공개 암호화 키를 가지고 있는지 확인하세요. |  복호화에 실패했습니다. 파트너가 유효한 인증서를 사용하여 페이로드를 전송했고 암호화는 유효한 암호화 알고리즘을 사용하여 수행되었는지 확인합니다.  | 
| DECRYPT\$1FAILED\$1INVALID\$1SMIME\$1FORMAT | 엔벨로핑된 MimePart를 파싱할 수 없습니다. |  MIME 페이로드가 손상되었거나 지원되지 않는 SMIME 형식입니다. 발신자는 사용 중인 형식이 지원되는지 확인한 다음 페이로드를 다시 전송해야 합니다.  | 
| DECRYPT\$1FAILED\$1NO\$1DECRYPTION\$1KEY\$1FOUND | 일치하는 암호 해독 키를 찾을 수 없습니다. |  파트너 프로필에 메시지와 일치하는 인증서가 할당되지 않았거나 메시지와 일치하는 인증서가 현재 만료되었거나 더 이상 유효하지 않습니다. 파트너 프로필을 업데이트하고 유효한 인증서가 포함되어 있는지 확인해야 합니다.  | 
| DECRYPT\$1FAILED\$1UNSUPPORTED\$1ENCRYPTION\$1ALG | 지원되지 않는 알고리즘(ID: encryption-ID)을 사용하여 SMIME 페이로드 암호 해독을 요청했습니다. |  원격 발신자가 지원되지 않는 암호화 알고리즘이 포함된 AS2 페이로드를 전송했습니다. 발신자는 AWS Transfer Family에서 지원하는 암호화 알고리즘을 선택해야 합니다.  | 
| DUPLICATE\$1MESSAGE | 중복 또는 이중 처리된 단계. |  페이로드에 중복 처리 단계가 있습니다. 예를 들어 2개의 암호화 단계가 있습니다. 서명, 압축, 암호화를 한 번에 완료하여 메시지를 재전송합니다.  | 
| ENCRYPT\$1FAILED\$1NO\$1ENCRYPTION\$1KEY\$1FOUND |  프로필에서 유효한 공개 암호화 인증서를 찾을 수 없음: *local-profile-ID*  | Transfer Family가 아웃바운드 메시지를 암호화하려고 시도하지만 로컬 프로필에 대한 암호화 인증서를 찾을 수 없습니다.해결 옵션:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/transfer/latest/userguide/as2-monitoring.html) | 
| ENCRYPTION\$1FAILED | 파일 이름 파일을 암호화하지 못했습니다. |  전송할 파일은 암호화에 사용할 수 없습니다. 파일이 예상 AS2 위치에 있고 AWS Transfer Family 가 파일을 읽을 권한이 있는지 확인하세요.  | 
| FILE\$1SIZE\$1TOO\$1LARGE | 파일 크기가 너무 큽니다. | 이는 파일 크기 제한을 초과하는 파일을 보내거나 받을 때 발생합니다. | 
| HTTP\$1ERROR\$1RESPONSE\$1FROM\$1PARTNER |  *파트너 URL* ID=*message-ID*인 메시지에 대해 상태 400을 반환했습니다.  |  파트너의 AS2 서버와 통신할 때 예상치 못한 HTTP 응답 코드가 반환되었습니다. 파트너는 AS2 서버 로그에서 추가 진단을 제공할 수 있습니다.  | 
| INSUFFICENT\$1MESSAGE\$1SECURITY\$1UNENCRYPTED | 암호화가 필요합니다. | 파트너가 Transfer Family에 암호화되지 않은 메시지를 보냈지만 이 메시지는 지원되지 않습니다. 발신자는 암호화된 페이로드를 사용해야 합니다. | 
| INVALID\$1ENDPOINT\$1PROTOCOL | HTTP와 HTTPS만 지원됩니다. | AS2 커넥터 구성에서 HTTP 또는 HTTPS를 프로토콜로 지정해야 합니다. | 
| INVALID\$1REQUEST |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/transfer/latest/userguide/as2-monitoring.html)  |  이 오류에는 여러 가지 원인이 있습니다. 다음 해결 방법은 이전 열에 나열된 오류에 해당합니다. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/transfer/latest/userguide/as2-monitoring.html) | 
| INVALID\$1URL\$1FORMAT | 잘못된 URL 형식: URL |  잘못된 URL로 구성된 커넥터를 사용하여 아웃바운드 메시지를 보낼 때 이 문제가 발생합니다. 커넥터가 유효한 HTTP 또는 HTTPS URL로 구성되어 있는지 확인하세요.  | 
| MDN\$1RESPONSE\$1INDICATES\$1AUTHENTICATION\$1FAILED | 해당 사항 없음 | 수신자는 발신자를 인증할 수 없습니다. 거래 파트너가 [처리 수정자](https://datatracker.ietf.org/doc/html/rfc4130#section-7.5.4) 오류: authentication-failed와 함께 Transfer Family에 MDN을 반환합니다. | 
| MDN\$1RESPONSE\$1INDICATES\$1DECOMPRESSION\$1FAILED | 해당 사항 없음 | 이는 수신자가 메시지 내용을 압축 해제할 수 없을 때 발생합니다. 거래 파트너가 [처리 수정자](https://datatracker.ietf.org/doc/html/rfc4130#section-7.5.4) 오류: decompression-failed와 함께 Transfer Family에 MDN을 반환합니다. | 
| MDN\$1RESPONSE\$1INDICATES\$1DECRYPTION\$1FAILED | 해당 사항 없음 | 수신자는 메시지 내용을 해독할 수 없습니다. 거래 파트너가 [처리 수정자](https://datatracker.ietf.org/doc/html/rfc4130#section-7.5.4) 오류: authentication-failed와 함께 Transfer Family에 MDN을 반환합니다. | 
| MDN\$1RESPONSE\$1INDICATES\$1INSUFFICIENT\$1MESSAGE\$1SECURITY | 해당 사항 없음 | 수신자는 메시지가 서명되거나 암호화되기를 기대하지만, 그렇지 않습니다. 거래 파트너가 [처리 수정자](https://datatracker.ietf.org/doc/html/rfc4130#section-7.5.4) 오류: insufficient-message-security와 함께 Transfer Family에 MDN을 반환합니다.커넥터에서 서명 및/또는 암호화를 활성화하여 거래 파트너의 기대에 부합하도록 하세요. | 
| MDN\$1RESPONSE\$1INDICATES\$1INTEGRITY\$1CHECK\$1FAILED | 해당 사항 없음 | 수신자는 콘텐츠 무결성을 확인할 수 없습니다. 거래 파트너가 [처리 수정자](https://datatracker.ietf.org/doc/html/rfc4130#section-7.5.4) 오류: integrity-check-failed와 함께 Transfer Family에 MDN을 반환합니다. | 
| PATH\$1NOT\$1FOUND |  디렉터리 *file-path*를 생성할 수 없습니다. 상위 경로를 찾을 수 없습니다.  | Transfer Family가 고객의 Amazon S3 버킷에 디렉터리를 생성하려고 시도했지만 버킷을 찾을 수 없습니다.`StartFileTransfer`명령에 언급된 각 경로에 기존 버킷의 이름이 포함되어 있는지 확인하세요. | 
| SEND\$1FILE\$1NOT\$1FOUND | 파일 경로 파일 경로를 찾을 수 없습니다. |  Transfer Family는 파일 보내기 작업에서 파일을 찾을 수 없습니다. 구성된 홈 디렉토리 및 경로가 유효하고 Transfer Family에 파일에 대한 읽기 권한이 있는지 확인합니다.  | 
| SERVER\$1NOT\$1FOUND | 이벤트와 연결된 서버를 찾을 수 없습니다. | Transfer Family가 메시지를 받았을 때 서버를 찾지 못했습니다. 수신 메시지를 처리하는 중에 서버가 삭제되면 이런 일이 발생할 수 있습니다. | 
| SERVER\$1NOT\$1ONLINE | 서버 server-ID가 온라인 상태가 아닙니다. | Transfer Family 서버가 오프라인 상태입니다.메시지를 수신하고 처리할 수 있도록 서버를 시작합니다. | 
| SIGNING\$1FAILED | 파일에 서명하지 못했습니다. |  전송할 파일을 서명할 수 없거나 서명을 수행할 수 없습니다. 파일이 예상 AS2 위치에 있고 AWS Transfer Family 가 파일을 읽을 권한이 있는지 확인하세요.  | 
| SIGNING\$1FAILED\$1NO\$1SIGNING\$1KEY\$1FOUND | 프로필: 로컬 프로필 ID에 대한 인증서를 찾을 수 없습니다. | 아웃바운드 메시지에 서명하려고 시도했지만 로컬 프로필에 대한 서명 인증서를 찾을 수 없습니다.해결 옵션:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/transfer/latest/userguide/as2-monitoring.html) | 
| UNABLE\$1RESOLVE\$1HOST\$1TO\$1IP\$1ADDRESS | 호스트 이름을 IP 주소로 확인할 수 없습니다. |  Transfer Family는 AS2 커넥터에 구성된 공용 DNS 서버에서 DNS 대 IP 주소 확인을 수행할 수 없습니다. 커넥터가 유효한 파트너 URL을 가리키도록 업데이트하세요.  | 
| UNABLE\$1TO\$1CONNECT\$1TO\$1REMOTE\$1HOST\$1OR\$1IP | 엔드포인트에 대한 연결이 시간 초과되었습니다. |  Transfer Family는 구성된 파트너의 AS2 서버에 소켓 연결을 설정할 수 없습니다. 구성된 IP 주소에서 파트너의 AS2 서버를 사용할 수 있는지 확인하세요.  | 
| UNABLE\$1TO\$1RESOLVE\$1HOSTNAME | 호스트 이름의 호스트 이름을 확인할 수 없습니다. |  Transfer Family 서버가 공용 DNS 서버를 사용하여 파트너의 호스트 이름을 확인할 수 없습니다. 구성된 호스트가 등록되어 있고 DNS 레코드를 게시할 시간이 있었는지 확인하세요.  | 
| VERIFICATION\$1FAILED | 메시지 ID AS2 메시지에 대한 서명 확인에 실패했거나 MIC 코드가 일치하지 않았습니다. | 발신자의 서명 인증서가 원격 프로필의 서명 인증서와 일치하는지 확인하세요. 또한 MIC 알고리즘이 호환되는지 확인합니다 AWS Transfer Family. | 
| VERIFICATION\$1FAILED\$1NO\$1MATCHING\$1KEY\$1FOUND |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/transfer/latest/userguide/as2-monitoring.html)  | AWS Transfer Family 가 수신된 메시지의 서명을 확인하려고 하지만 파트너 프로필에 일치하는 서명 인증서를 찾을 수 없습니다.해결 옵션:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/transfer/latest/userguide/as2-monitoring.html) | 

# 인증서 만료 모니터링
<a name="certificate-expiry-monitoring"></a>

AWS Transfer Family 는 AS2 인증서의 만료 날짜를 자동으로 모니터링하고 Amazon CloudWatch 지표를 게시하여 인증서 만료 시기를 추적할 수 있습니다. 이를 통해 인증서 갱신을 사전에 관리하고 서비스 중단을 방지할 수 있습니다.

## DaysUntilExpiry 지표
<a name="daysuntilexpiry-metric"></a>

AS2용 인증서를 가져오면 Transfer Family는 라는 CloudWatch 지표를 자동으로 생성합니다`DaysUntilExpiry`. 이 지표는 인증서를 가져올 때 `InactiveDate` 지정한에 따라 인증서가 만료될 때까지 남은 일수를 추적합니다.

**지표 세부 정보:**
+ **지표 이름:** `DaysUntilExpiry`
+ **네임스페이스:** `AWS/Transfer`
+ **차원:** `CertificateId` (항상 존재), `Description` (인증서 가져오기 중에 제공된 경우)
+ **단위:** 개수(일)
+ **빈도:** 매일 게시됨

**중요**  
Transfer Family에서이 지표를 계정에 내보내려면 인증서를 가져온 후 최대 하루가 걸릴 수 있습니다.

인증서가 비활성 날짜에 가까워지면 지표 값이 매일 1씩 감소합니다. 예를 들어 인증서에 만료까지 30일이 있는 경우 지표에는 30일, 다음 날 29일이 표시됩니다.

## 인증서 모니터링 모범 사례
<a name="certificate-monitoring-best-practices"></a>

인증서 만료 모니터링을 설정할 때 다음 모범 사례를 따르세요.
+ **여러 알림 임계값 설정:** 다양한 기간(예: 만료 전 30일, 14일, 7일)에 대한 경보를 생성하여 인증서 갱신에 충분한 시간을 제공합니다.
+ **적절한 통계 사용:** 경보를 생성할 때 `Maximum` 통계를 사용하여 최신 지표 값을 캡처합니다.
+ **적절한 경보 작업 구성:** 인증서를 갱신할 수 있는 적절한 팀원에게 알리도록 알림을 설정합니다.
+ **알림 테스트:** 알림 시스템을 정기적으로 테스트하여 알림이 제대로 전달되었는지 확인합니다.
+ **프로세스 문서화:** 인증서 갱신 프로세스와 다양한 인증서를 담당하는 사람에 대한 문서를 유지 관리합니다.

## 경보 구성 예
<a name="certificate-monitoring-examples"></a>

다음은 다양한 알림 시나리오에 대한 경보 구성의 예입니다.

### 30일 만료 경고
<a name="thirty-day-warning"></a>

인증서가 만료될 때까지 30일 이하일 때 트리거되는 경보를 생성합니다.
+ **지표:** DaysUntilExpiry
+ **통계: **Maximum
+ **기간:** 1일
+ **임계값:** 30
+ **비교:** 임계값 이하
+ **누락된 데이터 처리:** 누락된 데이터를 양호한 것으로 취급(위반하지 않음)

### 심각한 7일 만료 경고
<a name="critical-warning"></a>

인증서가 만료될 때까지 7일 이하일 때 트리거되는 중요한 경보를 생성합니다.
+ **지표:** DaysUntilExpiry
+ **통계: **Maximum
+ **기간:** 1일
+ **임계값:** 7
+ **비교:** 임계값 이하
+ **누락된 데이터 처리:** 누락된 데이터를 양호한 것으로 취급(위반하지 않음)