

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

# 자습서: Amazon Virtual Private Cloud에서 Amazon SQS 대기열로 메시지 보내기
<a name="sqs-sending-messages-from-vpc"></a>

이 자습서는 메시지를 안전한 프라이빗 네트워크를 통해 Amazon SQS 대기열로 보내는 방법을 보여줍니다. 네트워크에는 다음이 포함됩니다.
+ Amazon EC2 인스턴스가 포함된 VPC
+ Amazon EC2 인스턴스가 퍼블릭 인터넷을 사용하지 않고 Amazon SQS에 연결할 수 있게 하는 인터페이스 VPC 엔드포인트

완전 프라이빗 네트워크에서도 Amazon EC2 인스턴스에 연결하고 Amazon SQS 대기열로 메시지를 보낼 수 있습니다. 자세한 내용은 [Amazon SQS용 Amazon Virtual Private Cloud 엔드포인트](sqs-internetwork-traffic-privacy.md#sqs-vpc-endpoints) 단원을 참조하십시오.

**중요**  
Amazon Virtual Private Cloud는 HTTPS Amazon SQS 엔드포인트에서만 사용할 수 있습니다.
Amazon VPC에서 메시지를 보내도록 Amazon SQS를 구성할 때는 프라이빗 DNS를 활성화하고 듀얼 스택 엔드포인트를 위해 엔드포인트를 `sqs.us-east-2.amazonaws.com` 또는 `sqs.us-east-2.api.aws` 형식으로 지정해야 합니다.
Amazon SQS는 `com.amazonaws.region.sqs-fips` 엔드포인트 서비스를 사용하여 PrivateLink를 통해 FIPS 엔드포인트도 지원합니다. `sqs-fips.region.amazonaws.com` 형식으로 FIPS 엔드포인트에 연결할 수 있습니다.
Amazon Virtual Private Cloud에서 듀얼 스택 엔드포인트를 사용하는 경우 IPv4 및 IPv6를 사용하여 요청이 전송됩니다.
프라이빗 DNS는 `queue.amazonaws.com` 또는 `us-east-2.queue.amazonaws.com` 같은 레거시 엔드포인트를 지원하지 않습니다.

## 1단계: Amazon EC2 키 페어 생성
<a name="create-ec2-key-pair"></a>

**키 페어는 Amazon EC2 인스턴스에 연결할 수 있게 해줍니다. 키 페어는 로그인 정보를 암호화하는 퍼블릭 키와 로그인 정보 암호를 해독하는 프라이빗 키로 구성됩니다.

1. [Amazon EC2 콘솔](https://console.aws.amazon.com/ec2/)에 로그인합니다.

1. 탐색 창의 **네트워크 및 보안**에서 **키 페어**를 선택합니다.

1. **키 페어 생성(Create Key Pair)**을 선택합니다.

1. **키 페어 생성** 대화 상자에서 **키 페어 이름**에`SQS-VPCE-Tutorial-Key-Pair`를 입력한 후 **생성**을 선택합니다.

1. 브라우저가 프라이빗 키 파일 `SQS-VPCE-Tutorial-Key-Pair.pem`을 자동으로 다운로드합니다.
**중요**  
이 파일을 안전한 위치에 저장합니다. EC2는 동일한 키 페어에 대해 `.pem` 파일을 두 번 생성하지 않습니다.

1. SSH 클라이언트가 EC2 인스턴스에 연결하도록 허용하려면 최종 사용자만 읽기 권한을 가질 수 있도록 프라이빗 키 파일에 대한 권한을 설정합니다. 예:

   ```
   chmod 400 SQS-VPCE-Tutorial-Key-Pair.pem
   ```

## 2단계: AWS 리소스 생성
<a name="create-aws-resources"></a>

필요한 인프라를 설정하려면 Amazon EC2 인스턴스 및 Amazon SQS 대기열과 같은 AWS 리소스로 구성된 *스택*을 생성하기 위한 청사진인 an CloudFormation *template*를 사용해야 합니다.

이 자습서에서 사용할 스택으로 다음과 같은 리소스가 있습니다.
+ VPC 및 이에 연결된 네트워킹 리소스(예: 서브넷, 보안 그룹, 인터넷 게이트웨이, 라우팅 테이블)
+ VPC 서브넷으로 시작된 Amazon EC2 인스턴스
+ Amazon SQS 대기열

 

1. GitHub[https://github.com/aws-samples/amazon-sqs-samples/blob/master/templates/SQS-VPCE-Tutorial-CloudFormation.yaml](https://github.com/aws-samples/amazon-sqs-samples/blob/master/templates/SQS-VPCE-Tutorial-CloudFormation.yaml)에서 라는 CloudFormation 템플릿을 다운로드합니다.

1. [CloudFormation 콘솔](https://console.aws.amazon.com/cloudformation/)에 로그인합니다.

1. **스택 생성**을 선택합니다.

1. **템플릿 선택** 페이지에서 **Amazon S3에 템플릿 업로드**를 선택하고 `SQS-VPCE-SQS-Tutorial-CloudFormation.yaml` 파일을 선택한 후 **다음**을 선택합니다.

1. **세부 정보 지정** 페이지에서 다음 작업을 수행합니다.

   1. **스택 이름**에 `SQS-VPCE-Tutorial-Stack`을 입력합니다.

   1. **KeyName**에서 **SQS-VPCE-Tutorial-Key-Pair**를 선택합니다.

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

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

1. **검토** 페이지의 **기능** 섹션에서 ** AWS CloudFormation이 사용자 지정 이름으로 IAM 리소스를 생성할 수 있음을 승인합니다를** 선택한 다음 **생성을** 선택합니다.

CloudFormation 가 스택 생성을 시작하고 **CREATE\$1IN\$1PROGRESS** 상태를 표시합니다. 이 과정이 완료되면 CloudFormation 에는 **CREATE\$1COMPLETE** 상태가 표시됩니다.

## 3단계: EC2 인스턴스에 공개적으로 액세스할 수 없는지 확인
<a name="confirm-ec2-instance-is-not-publicly-accessible"></a>

 CloudFormation 템플릿은 라는 EC2 인스턴스를 VPC`SQS-VPCE-Tutorial-EC2-Instance`로 시작합니다. 이 EC2 인스턴스는 아웃바운드 트래픽을 허용하지 않으며 Amazon SQS로 메시지를 전송할 수 없습니다. 이를 확인하려면, 인스턴스에 연결하고 퍼블릭 엔드포인트에 연결을 시도한 후 Amazon SQS에 메시지를 게시해 보아야 합니다.

1. [Amazon EC2 콘솔](https://console.aws.amazon.com/ec2/)에 로그인합니다.

1. 탐색 메뉴의 **인스턴스**에서 **인스턴스**를 선택합니다.

1. **SQS-VPCE-Tutorial-EC2Instance**를 선택합니다.

1. **퍼블릭 DNS**에서 호스트 이름을 복사합니다(예: **ec2-203-0-113-0.us-west-2.compute.amazonaws.com**).

1. [앞서 생성한 키 페어](#create-ec2-key-pair)를 포함하는 디렉터리에서, 다음과 같은 명령을 사용하여 인스턴스에 연결합니다.

   ```
   ssh -i SQS-VPCE-Tutorial-Key-Pair.pem ec2-user@ec2-203-0-113-0.us-east-2.compute.amazonaws.com
   ```

1. 임의의 퍼블릭 엔드포인트에 연결해 봅니다. 예:

   ```
   ping amazon.com
   ```

   예상대로 연결 시도가 실패합니다.

1. [Amazon SQS 콘솔](https://console.aws.amazon.com/sqs/)에 로그인합니다.

1. 대기열 목록에서 **VPCE-SQS-Tutorial-Stack-CFQueue-1ABCDEFGH2IJK**와 같이 CloudFormation 템플릿으로 생성된 대기열을 선택합니다.

1. **세부 정보** 테이블에서 URL을 복사합니다(예: **https://sqs.us-east-2.amazonaws.com/123456789012/**).

1. EC2 인스턴스에서 다음과 같은 명령을 사용하여 대기열에 메시지를 게시해 봅니다.

   ```
   aws sqs send-message --region us-east-2 --endpoint-url https://sqs.us-east-2.amazonaws.com/ --queue-url https://sqs.us-east-2.amazonaws.com/123456789012/ --message-body "Hello from Amazon SQS."
   ```

   예상대로 전송 시도가 실패합니다.
**중요**  
나중에 Amazon SQS용 VPC 엔드포인트를 생성하면 전송 시도가 성공할 것입니다.

## 4단계: Amazon SQS용 Amazon VPC 엔드포인트 생성
<a name="create-vpc-endpoint-for-sqs"></a>

VPC를 Amazon SQS에 연결하려면 인터페이스 VPC 엔드포인트를 정의해야 합니다. 엔드포인트를 추가한 후에는 VPC의 EC2 인스턴스에서 Amazon SQS API를 사용할 수 있습니다. 이렇게 하면 퍼블릭 인터넷을 통과하지 않고도 AWS 네트워크 내의 대기열로 메시지를 보낼 수 있습니다.

**참고**  
EC2 인스턴스는 여전히 인터넷의 다른 AWS 서비스 및 엔드포인트에 액세스할 수 없습니다.

1. [Amazon VPC 콘솔](https://console.aws.amazon.com/vpc/)에 로그인합니다.

1. 탐색 메뉴에서 **엔드포인트**를 선택합니다.

1. **엔드포인트 생성**을 선택합니다.

1. **엔드포인트 생성** 페이지의 **서비스 이름**에서 Amazon SQS의 서비스 이름을 선택합니다.
**참고**  
서비스 이름은 현재 AWS 리전에 따라 다릅니다. 예를 들어, 미국 동부(오하이오)에서는 서비스 이름이 **com.amazonaws.*us-east-2*.sqs**입니다.

1. **VPC**에서 **SQS-VPCE-Tutorial-VPC**를 선택합니다.

1. **서브넷**에서 **서브넷 ID**에 **SQS-VPCE-Tutorial-Subnet**이 포함된 서브넷을 선택합니다.

1. **보안 그룹**에서 **Select security groups(보안 그룹 선택)**를 선택한 다음 **그룹 이름**에 **SQS VPCE Tutorial Security Group**이 포함된 보안 그룹을 선택합니다.

1. **엔드포인트 생성**을 선택합니다.

   인터페이스 VPC 엔드포인트가 생성되고 ID가 표시됩니다. 예: **vpce-0ab1cdef2ghi3j456k**.

1. **닫기**를 선택하세요.

   Amazon VPC 콘솔에서 **엔드포인트** 페이지가 열립니다.

Amazon VPC가 엔드포인트를 생성하기 시작하고 **대기 중** 상태를 표시합니다. 이 과정이 완료되면 Amazon VPC에는 **사용 가능** 상태가 표시됩니다.

## 5단계: Amazon SQS 대기열에 메시지 전송
<a name="sqs-vpc-tutorial-publish"></a>

이제 VPC에 Amazon SQS용 엔드포인트가 포함되므로 EC2 인스턴스에 연결하여 대기열로 메시지를 보낼 수 있습니다.

1. EC2 인스턴스에 다시 연결합니다. 예:

   ```
   ssh -i SQS-VPCE-Tutorial-Key-Pair.pem ec2-user@ec2-203-0-113-0.us-east-2.compute.amazonaws.com
   ```

1. 다음과 같은 명령을 사용하여 다시 대기열에 메시지를 게시해 봅니다.

   ```
   aws sqs send-message --region us-east-2 --endpoint-url https://sqs.us-east-2.amazonaws.com/ --queue-url https://sqs.us-east-2.amazonaws.com/123456789012/ --message-body "Hello from Amazon SQS."
   ```

   전송 시도가 성공하고 메시지 본문의 MD5 다이제스트와 메시지 ID가 표시됩니다. 예:

   ```
   {
   	"MD5OfMessageBody": "a1bcd2ef3g45hi678j90klmn12p34qr5",
   	"MessageId": "12345a67-8901-2345-bc67-d890123e45fg"
   }
   ```

 CloudFormation 템플릿에서 생성한 대기열(예: **VPCE-SQS-Tutorial-Stack-CFQueue-1ABCDEFGH2IJK**)에서 메시지를 수신하고 삭제하는 방법에 대한 자세한 내용은 섹션을 참조하세요[Amazon SQS에서 메시지 수신 및 삭제](step-receive-delete-message.md).

리소스 삭제에 대한 자세한 내용은 다음을 참조하십시오.
+ **Amazon VPC 사용 설명서의 [VPC 엔드포인트 삭제](https://docs.aws.amazon.com/vpc/latest/userguide/delete-vpc-endpoint.html)
+ [Amazon SQS 대기열 삭제](step-delete-queue.md)
+ *Amazon EC2 사용 설명서*의 [인스턴스 종료](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/terminating-instances.html)
+ **Amazon VPC 사용 설명서의 [VPC 삭제](https://docs.aws.amazon.com/vpc/latest/userguide/delete-vpc.html)
+ *AWS CloudFormation 사용 설명서*[의 CloudFormation 콘솔에서 스택 삭제](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-console-delete-stack.html) 
+ *Amazon EC2 사용 설명서*의 [키 페어 삭제](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-key-pairs.html#delete-key-pair)