

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

# 메시지 대기열을 Microsoft Azure 서비스 버스에서 Amazon SQS로 마이그레이션
<a name="migrate-a-messaging-queue-from-microsoft-azure-service-bus-to-amazon-sqs"></a>

*Nisha Gambhir, Amazon Web Services*

## 요약
<a name="migrate-a-messaging-queue-from-microsoft-azure-service-bus-to-amazon-sqs-summary"></a>

이 패턴은 Microsoft Azure Service Bus 큐 메시징 플랫폼을 사용하는 방식에서 .NET Framework 또는.NET Core 웹 또는 콘솔 애플리케이션을 Amazon Simple Queue Service(Amazon SQS)로 마이그레이션하는 방법을 설명합니다.

애플리케이션은 메시징 서비스를 사용하여 다른 애플리케이션과 데이터를 주고 받습니다. 이러한 서비스는 클라우드에서 분리되고 확장성이 뛰어난 마이크로서비스, 분산 시스템 및 서버리스 애플리케이션을 구축하는 데 도움이 됩니다.

Azure Service Bus 대기열은 대기열 및 게시/구독 메시징을 지원하는 광범위한 Azure 메시징 인프라의 일부입니다. 

Amazon SQS는 마이크로서비스와 분산 시스템, 서버리스 애플리케이션을 분리하거나 확장하기 쉽게 해 주는 완전 관리형 메시지 대기열 서비스입니다. Amazon SQS는 메시지 지향 미들웨어의 관리 및 운영과 관련된 복잡성과 오버헤드를 없애고 개발자가 작업을 차별화하는 데 집중할 수 있도록 합니다. Amazon SQS를 사용하면 메시지를 손실하거나 다른 서비스를 사용할 필요 없이 소프트웨어 구성 요소 간에 어떤 볼륨으로든 메시지를 전송, 저장 및 수신할 수 있습니다.

## 사전 조건 및 제한 사항
<a name="migrate-a-messaging-queue-from-microsoft-azure-service-bus-to-amazon-sqs-prerequisites-and-limitations"></a>

**사전 조건 **
+ 활성 상태의 AWS 계정 
+ Azure Service Bus 대기열을 사용하는 .NET 프레임워크 또는.NET Core 웹 또는 콘솔 애플리케이션(샘플 코드 첨부)

**제품 버전**
+ .NET Framework 3.5 이상 또는 .NET Core 1.0.1, 2.0.0 이상

## 아키텍처
<a name="migrate-a-messaging-queue-from-microsoft-azure-service-bus-to-amazon-sqs-architecture"></a>

**소스 기술 스택  **
+ Azure Service Bus 대기열을 사용하여 메시지를 보내는 .NET 코어 또는 프레임워크) 웹 또는 콘솔 애플리케이션

 

**대상 기술 스택  **
+  Amazon SQS

## 도구
<a name="migrate-a-messaging-queue-from-microsoft-azure-service-bus-to-amazon-sqs-tools"></a>

**도구**
+ Microsoft Visual Studio

**코드**

Amazon SQS용 AWS Identity 및 Access Management(IAM) 정책을 생성하는 방법:

1. AWS Management Console에 로그인하여 [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/)에서 IAM 콘솔을 엽니다.

2. 왼쪽 탐색 창에서 **정책**을 선택한 후 **정책 생성**을 선택합니다.

3. **JSON** 탭을 선택하고 다음 코드를 붙여 넣습니다.

```
{
   "Version": "2012-10-17",		 	 	 
   "Statement": [
      {
         "Sid": "VisualEditor0",
         "Effect": "Allow",
         "Action": [
            "sqs:DeleteMessage",
            "sqs:GetQueueUrl",
            "sqs:ChangeMessageVisibility",
            "sqs:SendMessageBatch",
            "sqs:ReceiveMessage",
            "sqs:SendMessage",
            "sqs:GetQueueAttributes",
            "sqs:ListQueueTags",
            "sqs:ListDeadLetterSourceQueues",
            "sqs:DeleteMessageBatch",
            "sqs:PurgeQueue",
            "sqs:DeleteQueue",
            "sqs:CreateQueue",
            "sqs:ChangeMessageVisibilityBatch",
            "sqs:SetQueueAttributes"
         ],
         "Resource": "arn:aws:sqs:*:<AccountId>:*"
      },
      {
         "Sid": "VisualEditor1",
         "Effect": "Allow",
         "Action": "sqs:ListQueues",
         "Resource": "*"
      }
   ]
}
```

4. **정책 검토**를 선택하고 이름을 입력한 다음 **정책 생성**을 선택합니다.

5. 새로 만든 정책을 기존 IAM 역할에 연결하거나 새 역할을 생성합니다.

## 에픽
<a name="migrate-a-messaging-queue-from-microsoft-azure-service-bus-to-amazon-sqs-epics"></a>

### AWS에서 Amazon SQS 설정
<a name="set-up-amazon-sqs-in-aws"></a>


| 작업 | 설명 | 필요한 기술 | 
| --- | --- | --- | 
| Amazon SQS용 IAM 정책을 생성합니다. | Amazon SQS에 대한 액세스를 제공하는 IAM 정책을 생성합니다. 샘플 정책에 대한 코드 섹션을 참조하세요. | 시스템 엔지니어 | 
| AWS 프로파일을 생성합니다. | AWS Tools for PowerShell 명령 Set-AWSCredential을 실행하여 새 프로필을 생성합니다. 이 명령은 지정한 프로파일 이름 아래의 기본 보안 인증 파일에 액세스 키와 보안 키를 저장합니다. 이전에 생성한 Amazon SQS 정책을 이 계정에 연결합니다. AWS 액세스 키 ID 및 비밀 액세스 키를 유지합니다. 다음 단계에서 이 정보를 사용할 것입니다. | 시스템 엔지니어 | 
| SQS대기열을 생성합니다. | 표준 대기열 또는 선입선출(FIFO) 대기열을 만들 수 있습니다. 지침은 참조 섹션의 링크를 참조하세요. | 시스템 엔지니어 | 

### .NET 애플리케이션 코드 수정
<a name="revise-your-net-application-code"></a>


| 작업 | 설명 | 필요한 기술 | 
| --- | --- | --- | 
| AWS Toolkit for Visual Studio를 설치합니다. | 이 툴킷은 Microsoft Visual Studio용 확장 프로그램입니다. 이를 통해 AWS에서 .NET 애플리케이션을 쉽게 구축하고 배포할 수 있습니다. 설치 및 사용 지침은 참조 섹션의 링크를 참조하세요. | 애플리케이션 개발자 | 
| AWSSDK.SQS NuGet 패키지를 설치합니다. | 비주얼 스튜디오에서 “NuGet 패키지 관리”를 선택하거나 “설치-패키지 AWSSDK.SQS” 명령을 실행하여 AWSSDK.SQS를 설치할 수 있습니다. | 애플리케이션 개발자 | 
| .NET 애플리케이션에서 AWSCredentials 객체를 생성합니다. | 첨부 파일의 샘플 애플리케이션은 AWSCredentials을 상속하는 BasicAwCredentials 객체를 생성하는 방법을 보여줍니다. 이전의 액세스 키 ID와 비밀 액세스 키를 사용하거나, 객체가 런타임에 사용자 프로필의 일부로.aws 폴더에서 이러한 키를 선택하도록 할 수 있습니다. | 애플리케이션 개발자 | 
| SQS 클라이언트 객체를 생성합니다. | .NET 프레임워크용 SQS 클라이언트 객체(AmazonSQSClient)를 생성합니다. 이는 Amazon.SQS 네임스페이스의 일부입니다. 이 객체는 Microsoft.Azure.ServiceBus 네임스페이스의 일부인 iQueueClient 대신 필요합니다. | 애플리케이션 개발자 | 
| SendMessageAsync 메서드를 호출하여 SQS 대기열에 메시지를 전송합니다. | 메시지를 대기열로 보내는 코드가 AmazonSQSClient.SendMessageAsync 메서드를 사용하도록 변경합니다. 자세한 내용은 첨부된 코드 샘플을 참조하세요.. | 애플리케이션 개발자 | 
| ReceiveMessageAsync 메서드를 호출하여 SQS 대기열에서 메시지를 수신합니다. | AmazonSQSClient.ReceiveMessageAsync 메서드를 사용하도록 메시지를 수신하는 코드를 변경합니다. 자세한 내용은 첨부된 코드 샘플을 참조하세요.. | 애플리케이션 개발자 | 
| DeleteMessageAsync 메서드를 호출하여 SQS 대기열에서 메시지를 삭제합니다. | 메시지를 삭제하려면 queueClient.CompleteAsync 메서드의 코드를 amazonSqsClient.DeleteMessageAsync 메서드로 변경합하세요. 자세한 내용은 첨부된 코드 샘플을 참조하세요.. | 애플리케이션 개발자 | 

## 관련 리소스
<a name="migrate-a-messaging-queue-from-microsoft-azure-service-bus-to-amazon-sqs-related-resources"></a>
+ [.NET용 AWS SDK 개발자 안내서](https://docs.aws.amazon.com/sdk-for-net/v3/developer-guide/welcome.html)
+ [Amazon SQS를 사용한 메시징](https://docs.aws.amazon.com/sdk-for-net/v3/developer-guide/sqs-apis-intro.html)
+ [AWS SDK for .NET을 사용하여 Amazon SQS 대기열 생성 및 사용](https://docs.aws.amazon.com/sdk-for-net/v2/developer-guide/how-to-sqs.html)
+ [Amazon SQS 메시지 전송](https://docs.aws.amazon.com/sdk-for-net/v2/developer-guide/SendMessage.html)
+ [Amazon SQS Queue에서 메시지 수신](https://docs.aws.amazon.com/sdk-for-net/v2/developer-guide/ReceiveMessage.html)
+ [Amazon SQS 대기열에서 메시지 삭제](https://docs.aws.amazon.com/sdk-for-net/v2/developer-guide/DeleteMessage.html)
+ [AWS Toolkit for Visual Studio](https://docs.aws.amazon.com/toolkit-for-visual-studio/latest/user-guide/welcome.html)

## 추가 정보
<a name="migrate-a-messaging-queue-from-microsoft-azure-service-bus-to-amazon-sqs-additional-information"></a>

이 패턴에는 두 개의 샘플 애플리케이션이 포함됩니다(첨부 파일 섹션 참조).
+ **AzureSBtestApp**에는 Azure 서비스 버스 대기열을 사용하는 코드가 포함되어 있습니다.
+ **AmazonSqsTestApp**은 Amazon SQS를 사용합니다. 이 애플리케이션은.NET Core 2.2를 사용하는 콘솔 애플리케이션으로, 메시지 송수신 예제가 포함되어 있습니다.

참고:
+ queueClient는 Microsoft.Azure.ServiceBus 네임스페이스(Microsoft.Azure.ServiceBus NuGet 패키지에 포함됨)의 일부인 iQueueClient의 객체입니다.
+ AmazonSQSclient는 Amazon.SQS 네임스페이스(AWSSDK.SQS NuGet 패키지에 포함)의 일부인 AmazonSQSclient의 객체입니다.
+ 코드가 실행되는 위치(예: EC2에서 실행 중인지 여부)에 따라 역할에 SQS 대기열에 쓸 수 있는 권한이 있어야 합니다.

## 첨부
<a name="attachments-25334709-7000-4f60-87ed-ea41acb41a99"></a>

이 문서와 관련된 추가 콘텐츠에 액세스하려면 [attachment.zip](samples/p-attach/25334709-7000-4f60-87ed-ea41acb41a99/attachments/attachment.zip) 파일의 압축을 풉니다.