

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

# Amazon SQS 콘솔을 사용하여 Amazon SQS 대기열 구성
<a name="sqs-configuring"></a>

Amazon SQS 콘솔을 사용하여 Amazon SQS 대기열 및 기능을 구성하고 관리할 수 있습니다. 다른 방법:
+ 보안 강화를 위해 서버 측 암호화를 활성화합니다.
+ Dead Letter Queue(DLQ)를 연결하여 처리되지 않은 메시지를 처리합니다.
+ 이벤트 기반 처리를 위해 Lambda 함수를 간접적으로 호출하도록 트리거를 설정합니다.

# Amazon SQS에 대한 속성 기반 액세스 제어
<a name="sqs-abac"></a>

## ABAC란 무엇입니까?
<a name="sqs-abac-whatis"></a>

속성 기반 액세스 제어(ABAC)는 사용자 및 AWS 리소스에 연결된 태그를 기반으로 권한을 정의하는 권한 부여 프로세스입니다. ABAC는 속성 및 값을 기반으로 세분화되고 유연한 액세스 제어를 제공하고 재구성된 역할 기반 정책과 관련된 보안 위험을 줄이며 감사 및 액세스 정책 관리를 중앙 집중화합니다. ABAC에 대한 자세한 내용은 **IAM 사용 설명서의 [AWS용 ABAC란 무엇입니까?](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction_attribute-based-access-control.html) 섹션을 참조하세요.

Amazon SQS는 Amazon SQS 대기열과 연결된 태그 및 별칭을 기반으로 Amazon SQS 대기열에 대한 액세스를 제어할 수 있도록 하여 ABAC를 지원합니다. Amazon SQS에서 ABAC를 활성화하는 태그 및 별칭 조건 키는 정책을 편집하거나 권한 부여를 관리하지 않고도 IAM 보안 주체가 Amazon SQS 대기열을 사용할 수 있는 권한을 부여합니다. ABAC 조건 키에 대해 자세히 알아보려면 *서비스 승인 참조*의 [Amazon SQS에 대한 조건 키](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonsqs.html#amazonsqs-policy-keys)를 참조하세요.

ABAC를 사용하면 태그를 사용하여 Amazon SQS 대기열에 대한 IAM 액세스 권한 및 정책을 구성할 수 있으며, 이는 권한 관리의 규모를 조정하는 데 도움이 됩니다. 새 리소스를 추가할 때마다 정책을 업데이트할 필요 없이 각 비즈니스 역할에 추가하는 태그를 사용하여 IAM에서 단일 권한 정책을 생성할 수 있습니다. 또한 IAM 보안 주체에 태그를 추가하여 ABAC 정책을 생성할 수 있습니다. 호출하는 IAM 사용자 역할의 태그가 Amazon SQS 대기열 태그와 일치할 때 Amazon SQS 작업을 허용하도록 ABAC 정책을 설계할 수 있습니다. 태그 지정에 대한 자세한 내용은 [AWS 태그 지정 전략](https://docs.aws.amazon.com/general/latest/gr/aws_tagging.html) 및 섹션을 AWS참조하세요[Amazon SQS 비용 할당 태그](sqs-queue-tags.md).

**참고**  
Amazon SQS용 ABAC는 현재 Amazon SQS를 사용할 수 있는 모든 AWS 상용 리전에서 사용할 수 있습니다. 단, 다음은 예외입니다.  
아시아 태평양(하이데라바드)
아시아 태평양(멜버른)
유럽(스페인) 
유럽(취리히)

## Amazon SQS에 ABAC를 사용해야 하는 이유는 무엇입니까?
<a name="sqs-abac-benefits"></a>

Amazon SQS에서 ABAC를 사용할 때 얻을 수 있는 몇 가지 이점은 다음과 같습니다.
+ Amazon SQS의 ABAC에는 필요한 권한 정책이 적습니다. 각 직무에 서로 다른 정책을 생성할 필요가 없습니다. 둘 이상의 대기열에 적용되는 리소스 및 요청 태그를 사용할 수 있으므로 운영 오버헤드가 줄어듭니다.
+ ABAC를 사용하여 팀을 빠르게 확장할 수 있습니다. 리소스 생성 중에 리소스에 태그가 적절하게 지정되면 새 리소스에 대한 권한이 태그에 따라 자동으로 부여됩니다.
+ IAM 보안 주체에 대한 권한을 사용하여 리소스 액세스를 제한할 수 있습니다. IAM 보안 주체용 태그를 생성하고 이를 사용하여 IAM 보안 주체의 태그와 일치하는 특정 작업에 대한 액세스를 제한할 수 있습니다. 이렇게 하면 요청 권한 부여 프로세스를 자동화할 수 있습니다.
+ 누가 리소스에 액세스하는지 추적할 수 있습니다. AWS CloudTrail에서 사용자 속성을 살펴봄으로써 세션의 ID를 확인할 수 있습니다.

**Topics**
+ [ABAC란 무엇입니까?](#sqs-abac-whatis)
+ [Amazon SQS에 ABAC를 사용해야 하는 이유는 무엇입니까?](#sqs-abac-benefits)
+ [액세스 제어용 태그 지정](sqs-abac-tagging-resource-control.md)
+ [IAM 사용자 및 Amazon SQS 대기열 생성](sqs-abac-creating-queues.md)
+ [속성 기반 액세스 제어 테스트](sqs-abac-testing-access-control.md)

# Amazon SQS에서 액세스 제어용 태그 지정
<a name="sqs-abac-tagging-resource-control"></a>

다음은 Amazon SQS에서 액세스 제어에 태그를 사용하는 방법의 예입니다. IAM 정책은 IAM 사용자를 키 ‘environment’ 및 값 ‘production’인 리소스 태그를 포함하는 모든 대기열에 대한 모든 Amazon SQS 작업으로 제한합니다. 자세한 내용은 [태그 및 AWS Organizations를 사용한 속성 기반 액세스 제어를 참조하세요](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_tagging_abac.html).

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "AllowAccessForProd",
      "Effect": "Allow",
      "Action": "sqs:*",
      "Resource": "*",
      "Condition": {
        "StringEquals": {
          "aws:ResourceTag/environment": "prod"
        }
      }
    }
  ]
}
```

------

# IAM 사용자 및 Amazon SQS 대기열 생성
<a name="sqs-abac-creating-queues"></a>

다음 예제에서는 AWS Management Console 및를 사용하여 Amazon SQS에 대한 액세스를 제어하는 ABAC 정책을 생성하는 방법을 설명합니다 CloudFormation.

## 사용 AWS Management Console
<a name="sqs-abac-creating-queues-console"></a>

**IAM 사용자 생성**

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

1. 왼쪽 탐색 창에서 **사용자**를 선택합니다.

1. **사용자 추가**를 선택하고 **사용자 이름** 텍스트 상자에 이름을 입력합니다.

1. **액세스 키 - 프로그래밍 방식 액세스**를 선택하고 **다음: 권한**을 선택합니다.

1. **다음: 태그**를 선택합니다.

1. 태그 키를 `environment`로 추가하고 태그 값을 `beta`로 추가합니다.

1. **다음: 검토**를 선택한 후 **사용자 생성**을 선택합니다.

1. 액세스 키 ID와 비밀 액세스 키를 복사하여 안전한 위치에 저장합니다.

**IAM 사용자 권한 추가**

1. 생성한 IAM 사용자를 선택합니다.

1. **인라인 정책 추가**를 선택합니다.

1. JSON 탭에 다음 정책을 붙여넣습니다.

1. **정책 검토**를 선택합니다.

1. **정책 생성**을 선택합니다.

## 사용 AWS CloudFormation
<a name="sqs-abac-creating-queues-cf"></a>

다음 샘플 CloudFormation 템플릿을 사용하여 인라인 정책과 Amazon SQS 대기열이 연결된 IAM 사용자를 생성합니다.

```
AWSTemplateFormatVersion: "2010-09-09"
Description: "CloudFormation template to create IAM user with custom inline policy"
Resources:
    IAMPolicy:
        Type: "AWS::IAM::Policy"
        Properties:
            PolicyDocument: |
                {
                    "Version": "2012-10-17",		 	 	 
                    "Statement": [
                        {
                            "Sid": "AllowAccessForSameResTag",
                            "Effect": "Allow",
                            "Action": [
                                "sqs:SendMessage",
                                "sqs:ReceiveMessage",
                                "sqs:DeleteMessage"
                            ],
                            "Resource": "*",
                            "Condition": {
                                "StringEquals": {
                                    "aws:ResourceTag/environment": "${aws:PrincipalTag/environment}"
                                }
                            }
                        },
                        {
                            "Sid": "AllowAccessForSameReqTag",
                            "Effect": "Allow",
                            "Action": [
                                "sqs:CreateQueue",
                                "sqs:DeleteQueue",
                                "sqs:SetQueueAttributes",
                                "sqs:tagqueue"
                            ],
                            "Resource": "*",
                            "Condition": {
                                "StringEquals": {
                                    "aws:RequestTag/environment": "${aws:PrincipalTag/environment}"
                                }
                            }
                        },
                        {
                            "Sid": "DenyAccessForProd",
                            "Effect": "Deny",
                            "Action": "sqs:*",
                            "Resource": "*",
                            "Condition": {
                                "StringEquals": {
                                    "aws:ResourceTag/stage": "prod"
                                }
                            }
                        }
                    ]
                }
                
            Users: 
              - "testUser"
            PolicyName: tagQueuePolicy

    IAMUser:
        Type: "AWS::IAM::User"
        Properties:
            Path: "/"
            UserName: "testUser"
            Tags: 
              - 
                Key: "environment"
                Value: "beta"
```

# Amazon SQS에서 속성 기반 액세스 제어 테스트
<a name="sqs-abac-testing-access-control"></a>

다음 예제는 Amazon SQS에 속성 기반 액세스 제어를 테스트하는 방법을 보여줍니다.

## 태그 키를 environment로 설정하고 태그 값을 prod로 설정하여 대기열을 생성합니다.
<a name="sqs-abac-testing-access-control-create-queue"></a>

이 AWS CLI 명령을 실행하여 태그 키가 환경으로 설정되고 태그 값이 prod로 설정된 대기열 생성을 테스트합니다. AWS CLI가 없는 경우 시스템에 맞게 CLI를 [다운로드하고 구성할](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html) 수 있습니다.

```
aws sqs create-queue --queue-name prodQueue —region us-east-1 —tags "environment=prod"
```

Amazon SQS 엔드포인트에서 다음과 같은 `AccessDenied` 오류가 발생합니다.

```
An error occurred (AccessDenied) when calling the CreateQueue operation: Access to the resource <queueUrl> is denied.
```

이는 IAM 사용자의 태그 값이 [https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_CreateQueue.html](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_CreateQueue.html) API 직접 호출에서 전달된 태그와 일치하지 않기 때문입니다. 키가 `environment`로 설정되고 값이 `beta`로 설정된 태그를 IAM 사용자에게 적용했다는 점을 기억하세요.

## 태그 키를 environment로 설정하고 태그 값을 beta로 설정하여 대기열을 생성합니다.
<a name="sqs-abac-testing-access-control-create-env"></a>

이 CLI 명령을 실행하여 태그 키가 `environment`로 설정되고 태그 값이 `beta`로 설정된 대기열 생성을 테스트합니다.

```
aws sqs create-queue --queue-name betaQueue —region us-east-1 —tags "environment=beta"
```

아래와 비슷한 방법으로 대기열이 성공적으로 생성되었음을 확인하는 메시지가 나타납니다.

```
{
"QueueUrl": "<queueUrl>“
}
```

## 대기열로 메시지 전송
<a name="sqs-abac-testing-access-control-sending-message"></a>

이 CLI 명령을 실행하여 대기열에 메시지 전송을 테스트합니다.

```
aws sqs send-message --queue-url <queueUrl> --message-body testMessage
```

응답은 Amazon SQS 대기열로 메시지가 성공적으로 전송되었음을 보여줍니다. IAM 사용자 권한을 사용하면 `beta` 태그가 있는 대기열에 메시지를 보낼 수 있습니다. 응답에는 메시지가 포함된 `MD5OfMessageBody` 및 `MessageId`가 포함됩니다.

```
{
"MD5OfMessageBody": "<MD5OfMessageBody>",
"MessageId": "<MessageId>"
}
```

# Amazon SQS 콘솔을 사용하여 대기열 파라미터 구성
<a name="sqs-configure-queue-parameters"></a>

대기열을 [생성](creating-sqs-standard-queues.md#step-create-standard-queue) 또는 [편집](sqs-configure-edit-queue.md)할 때 다음 파라미터를 구성할 수 있습니다.
+ **표시 제한 시간** - 한 소비자가 대기열에서 수신한 메시지가 다른 메시지 소비자에게 표시되지 않는 시간입니다. 자세한 내용은 [표시 제한 시간](sqs-visibility-timeout.md)을 참조하세요.
**참고**  
콘솔을 사용하여 표시 제한 시간을 구성하면 대기열에 있는 모든 메시지에 대한 제한 시간 값이 구성됩니다. 단일 또는 여러 메시지에 대한 제한 시간을 구성하려면 AWS SDKs 중 하나를 사용해야 합니다.
+ **메시지 보존 기간** - Amazon SQS가 대기열에 남아 있는 메시지를 유지하는 기간입니다. 기본적으로 대기열의 메시지는 4일 동안 유지됩니다. 메시지를 최대 14일 동안 유지하도록 대기열을 구성할 수 있습니다. 자세한 내용은 [메시지 보존 기간](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_SetQueueAttributes.html)을 참조하세요.
+ **전송 지연** - Amazon SQS가 대기열에 추가된 메시지를 전송하기 전에 지연하는 시간입니다. 자세한 내용은 [전송 지연](sqs-delay-queues.md)을 참조하세요.
+ **최대 메시지 크기** - 이 대기열의 최대 메시지 크기입니다. 자세한 내용은 [최대 메시지 크기](sqs-s3-messages.md)를 참조하세요.
+ **메시지 수신 대기 시간** - 대기열이 수신 요청을 받은 후 Amazon SQS가 메시지를 사용할 수 있을 때까지 기다리는 최대 시간입니다. 자세한 내용은 [Amazon SQS 짧은 폴링 및 긴 폴링](sqs-short-and-long-polling.md) 단원을 참조하십시오.
+ **콘텐츠 기반 중복 제거 활성화** - Amazon SQS는 메시지 본문을 기반으로 중복 제거 ID를 자동으로 생성할 수 있습니다. 자세한 내용은 [Amazon SQS FIFO 대기열](sqs-fifo-queues.md) 단원을 참조하십시오.
+ **높은 처리량 FIFO 활성화** - 대기열의 메시지에 대해 높은 처리량을 활성화하는 데 사용합니다. 이 옵션을 선택하면 관련 옵션([중복 제거 범위](enable-high-throughput-fifo.md) 및 [FIFO 처리량 한도](enable-high-throughput-fifo.md))이 FIFO 대기열의 높은 처리량을 활성화하는 데 필요한 설정으로 변경됩니다. 자세한 내용은 [Amazon SQS에서 FIFO 대기열의 높은 처리량](high-throughput-fifo.md) 및 [Amazon SQS 메시지 할당량](quotas-messages.md) 섹션을 참조하세요.
+  **리드라이브 허용 정책**: 이 대기열을 배달 못한 편지 대기열로 사용할 수 있는 소스 대기열을 정의합니다. 자세한 내용은 [Amazon SQS에서 배달 못한 편지 대기열 사용](sqs-dead-letter-queues.md) 단원을 참조하십시오.



**기존 대기열에 대한 대기열 파라미터를 구성하려면(콘솔)**

1. [https://console.aws.amazon.com/sqs/](https://console.aws.amazon.com/sqs/)에서 Amazon SQS 콘솔을 엽니다.

1. 탐색 창에서 **대기열**을 선택합니다. 대기열을 선택하고 **편집**을 선택합니다.

1. **구성** 섹션으로 스크롤합니다.

1. **표시 제한 시간**에 기간과 단위를 입력합니다. 범위는 0초\$112시간입니다. 기본값은 30초입니다.

1. **메시지 보존 기간**에 기간과 단위를 입력합니다. 범위는 1분\$114일입니다. 기본값은 4일입니다.

1. 표준 대기열의 경우 **메시지 수신 대기 시간** 값을 입력합니다. 범위는 0\$120초입니다. 기본값은 0초이며 [짧은 폴링](sqs-short-and-long-polling.md)을 설정합니다. 0이 아닌 값은 모두 긴 폴링을 설정합니다.

1. **전송 지연**에 기간과 단위를 입력합니다. 범위는 0초\$115분입니다. 기본값은 0초입니다.

1. **최대 메시지 크기**에는 값을 입력합니다. 범위는 1KiB\$11,024KiB입니다. 기본값은 1,024KiB입니다.

1. FIFO 대기열의 경우 **콘텐츠 기반 중복 제거 활성화**를 선택하여 콘텐츠 기반 중복 제거를 활성화합니다. 기본 설정은 비활성화입니다.

1. (선택 사항) FIFO 대기열에서 메시지를 보내고 받을 때 처리량을 높이려면 **높은 처리량 FIFO 활성화**를 선택합니다.

   이 옵션을 선택하면 관련 옵션(**중복 제거 범위** 및 **FIFO 처리량 한도**)이 FIFO 대기열의 높은 처리량을 활성화하는 데 필요한 설정으로 변경됩니다. 높은 처리량 FIFO를 사용하는 데 필요한 설정을 변경하면 대기열에 일반 처리량이 적용되고 지정된 대로 중복 제거가 수행됩니다. 자세한 내용은 [Amazon SQS에서 FIFO 대기열의 높은 처리량](high-throughput-fifo.md) 및 [Amazon SQS 메시지 할당량](quotas-messages.md) 섹션을 참조하세요.

1. **리드라이브 허용 정책**의 경우 **활성화됨**을 선택합니다. **모두 허용**(기본값), **대기열 기준** 또는 **모두 거부** 중에서 선택합니다. **대기열 기준** 선택 시 Amazon 리소스 이름(ARN)별로 최대 10개의 소스 대기열 목록을 지정합니다.

1. 대기열 파라미터 구성을 마쳤으면 **저장**을 선택합니다.

# Amazon SQS에서 액세스 정책 구성
<a name="sqs-configure-add-permissions"></a>

대기열을 [편집](sqs-configure-edit-queue.md)할 때 해당 액세스 정책을 구성하여 상호 작용할 수 있는 사람을 제어할 수 있습니다.
+ 액세스 정책은 대기열에 액세스할 권한이 있는 계정, 사용자 및 역할을 정의합니다.
+ [https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_SendMessage.html](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_SendMessage.html), [https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_ReceiveMessage.html](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_ReceiveMessage.html) 또는 [https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_DeleteMessage.html](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_DeleteMessage.html)와 같이 허용되는 작업을 지정합니다.
+ 기본적으로 대기열 소유자만 메시지를 보내고 받을 권한이 있습니다.

****기존 대기열에 대한 액세스 정책을 구성하려면(콘솔)****

1. [https://console.aws.amazon.com/sqs/](https://console.aws.amazon.com/sqs/)에서 Amazon SQS 콘솔을 엽니다.

1. 탐색 창에서 **대기열**을 선택합니다.

1. 대기열을 선택하고 **편집**을 선택합니다.

1. **액세스 정책** 섹션으로 스크롤합니다.

1. 입력 상자에서 **액세스 정책 문**을 편집합니다. 액세스 정책 설명에 대한 자세한 내용은 [Amazon SQS의 Identity and Access Management](security-iam.md) 섹션을 참조하세요.

1. 액세스 정책 구성을 마쳤으면 **저장**을 선택합니다.

# SQS 관리형 암호화 키를 사용하여 대기열에 대해 서버 측 암호화 구성
<a name="sqs-configure-sqs-sse-queue"></a>

[기본](creating-sqs-standard-queues.md#step-create-standard-queue) Amazon SQS 관리형 서버 측 암호화(SSE) 옵션 외에도 Amazon SQS 관리형 SSE(SSE-SQS)를 사용하면 SQS 관리형 암호화 키 기반의 사용자 지정 관리형 서버 측 암호화를 생성하여 메시지 대기열을 통해 전송되는 민감한 데이터를 보호할 수 있습니다. SSE-SQS를 사용하면 암호화 키를 생성 및 관리하거나 데이터 암호화를 위해 코드를 수정할 필요가 없습니다. SSE-SQS를 사용하면 데이터를 안전하게 전송하는 한편, 추가 비용 없이 엄격한 암호화 규정 준수 및 규제 요구 사항을 충족할 수 있습니다.

SSE-SQS는 256비트 Advanced Encryption Standard(AES-256) 암호화를 사용하여 저장 데이터를 보호합니다. Amazon SQS가 메시지를 수신하면 SSE가 메시지를 즉시 암호화합니다. Amazon SQS는 메시지를 암호화된 형태로 저장하고 권한 있는 소비자에게 메시지를 보낼 때만 암호를 해독합니다.

**참고**  
기본 SSE 옵션은 암호화 속성을 지정하지 않고 대기열을 생성할 때만 유효합니다.
Amazon SQS는 모든 대기열 암호화를 끌 수 있습니다. 따라서 KMS-SSE를 끄면 SQS-SSE가 자동으로 활성화되지 않습니다. KMS-SSE를 끈 후 SQS-SSE를 활성화하려면 요청에 속성 변경을 추가해야 합니다.

**대기열에 대해 SSE-SQS 암호화를 구성하려면(콘솔)**
**참고**  
HTTP(비 TLS) 엔드포인트를 사용하여 만든 새 대기열에서는 기본적으로 SSE-SQS 암호화가 활성화되지 않습니다. HTTPS 또는 [서명 버전 4](https://docs.aws.amazon.com/general/latest/gr/signature-version-4.html) 엔드포인트를 사용하여 Amazon SQS 대기열을 생성하는 것이 보안 모범 사례입니다.

1. [https://console.aws.amazon.com/sqs/](https://console.aws.amazon.com/sqs/)에서 Amazon SQS 콘솔을 엽니다.

1. 탐색 창에서 **대기열**을 선택합니다.

1. 대기열을 선택한 다음 **편집**을 선택합니다.

1. **암호화**를 확장합니다.

1. **서버 측 암호화**에서 **활성화**(기본)를 선택합니다.
**참고**  
SSE를 활성화하면 암호화된 대기열에 대한 익명 `SendMessage` 및 `ReceiveMessage` 요청이 거부됩니다. Amazon SQS 보안 모범 사례에서는 익명 요청을 사용하지 말 것을 권장합니다. Amazon SQS 대기열로 익명 요청을 보내려면 SSE를 비활성화해야 합니다.

1. **Amazon SQS 키(SSE-SQS)**를 선택합니다. 이 옵션 사용에 대한 추가 요금은 부과되지 않습니다.

1. **저장**을 선택합니다.

# Amazon SQS 콘솔을 사용하여 대기열에 대한 서버 측 암호화 구성
<a name="sqs-configure-sse-existing-queue"></a>

대기열 메시지의 데이터를 보호하기 위해 Amazon SQS는 새로 생성된 모든 대기열에 대해 기본적으로 서버 측 암호화(SSE)를 사용하도록 설정되어 있습니다. Amazon SQS는 Amazon Web Services Key Management Service(Amazon Web Services KMS)와 통합하여 서버 측 암호화(SSE)용 [KMS 키](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#master_keys)를 관리합니다. SSE 사용에 대한 자세한 내용은 [Amazon SQS에서 저장 시 암호화](sqs-server-side-encryption.md) 섹션을 참조하세요.



대기열에 할당하는 KMS 키에는 대기열을 사용할 수 있는 권한이 있는 모든 주체에 대한 권한이 포함된 키 정책이 있어야 합니다. 자세한 내용은 [키 관리](sqs-key-management.md)를 참조하세요.

해당 KMS 키의 소유자가 아니거나 `kms:ListAliases` 및 `kms:DescribeKey` 권한이 없는 계정으로 로그인하는 경우 Amazon SQS 콘솔에서 해당 KMS 키에 대한 정보를 볼 수 없습니다. KMS 키의 소유자에게 이 권한을 부여해 달라고 요청해야 합니다. 자세한 내용은 [키 관리](sqs-key-management.md)를 참조하세요.

대기열을 [만들 때](creating-sqs-standard-queues.md#step-create-standard-queue) 또는 [편집](sqs-configure-edit-queue.md)할 때 SSE-KMS를 구성할 수 있습니다.

**기존 대기열에 대해 SSE-KMS 구성(콘솔)**

1. [https://console.aws.amazon.com/sqs/](https://console.aws.amazon.com/sqs/)에서 Amazon SQS 콘솔을 엽니다.

1. 탐색 창에서 **대기열**을 선택합니다.

1. 대기열을 선택한 다음 **편집**을 선택합니다.

1. **암호화**를 확장합니다.

1. **서버 측 암호화**에서 **활성화**(기본)를 선택합니다.
**참고**  
SSE를 활성화하면 암호화된 대기열에 대한 익명 `SendMessage` 및 `ReceiveMessage` 요청이 거부됩니다. Amazon SQS 보안 모범 사례에서는 익명 요청을 사용하지 말 것을 권장합니다. Amazon SQS 대기열로 익명 요청을 보내려면 SSE를 비활성화해야 합니다.

1. **AWS 키 관리 서비스 키(SSE-KMS)**를 선택합니다.

   콘솔에 **설명**, **계정** 및 KMS 키의 **KMS 키 ARN**이 표시됩니다.

1. 대기열의 KMS 키 ID를 지정합니다. 자세한 내용은 [주요 용어](sqs-server-side-encryption.md#sqs-sse-key-terms) 단원을 참조하십시오.

   1. **KMS 키 별칭 선택** 옵션을 선택합니다.

   1. 기본 키는 Amazon SQS용 Amazon Web Services 관리형 KMS 키입니다. 이 키를 사용하려면 **KMS 키** 목록에서 키를 선택합니다.

   1. Amazon Web Services 계정에서 사용자 지정 KMS 키를 사용하려면 **KMS 키** 목록에서 해당 키를 선택합니다. 사용자 지정 KMS 키를 만드는 방법에 대한 지침은 Amazon Web Services Key Management Service 개발자 가이드**에서 [키 만들기](https://docs.aws.amazon.com/kms/latest/developerguide/create-keys.html)를 참조하세요.

   1. 목록에 없는 사용자 지정 KMS 키 또는 다른 Amazon Web Services 계정의 사용자 지정 KMS 키를 사용하려면 **KMS 키 별칭 입력**을 선택하고 KMS 키 Amazon 리소스 이름(ARN)을 입력합니다.

1. (선택 사항) **데이터 키 재사용 기간**에서 1분에서 24시간 사이의 값을 지정합니다. 기본값은 5분입니다. 자세한 내용은 [데이터 키 재사용 기간 이해](sqs-key-management.md#sqs-how-does-the-data-key-reuse-period-work) 단원을 참조하십시오.

1. SSE-KMS 구성을 마치면 **저장**을 선택합니다.

# Amazon SQS 콘솔을 사용하여 대기열에 대한 비용 할당 태그 구성
<a name="sqs-configure-tag-queue"></a>

Amazon SQS 대기열을 정리하고 식별하기 위해 대기열에 비용 할당 태그를 추가할 수 있습니다. 자세한 내용은 [Amazon SQS 비용 할당 태그](sqs-queue-tags.md) 단원을 참조하십시오.
+ 세부 정보 페이지의 태그 지정 탭에 대기열의 태그가 표시됩니다.
+ 대기열을 [생성](creating-sqs-standard-queues.md#step-create-standard-queue)하거나 [편집](sqs-configure-edit-queue.md)할 때 태그를 추가하거나 수정할 수 있습니다.

**기존 대기열에 대해 태그 구성(콘솔)**

1. [https://console.aws.amazon.com/sqs/](https://console.aws.amazon.com/sqs/)에서 Amazon SQS 콘솔을 엽니다.

1. 탐색 창에서 **대기열**을 선택합니다.

1. 대기열을 선택하고 **편집**을 선택합니다.

1. 스크롤하여 **태그** 섹션으로 이동합니다.

1. 다음과 같이 대기열 태그를 추가, 수정 또는 제거합니다.

   1. 태그를 추가하려면 **새 태그 추가**를 선택하고 **키** 및 **값**을 입력한 다음 **새 태그 추가**를 선택합니다.

   1. 태그를 업데이트하려면 해당 태그의 **키**와 **값**을 변경합니다.

   1. 태그를 제거하려면 키-값 페어 옆에 있는 **제거**를 선택합니다.

1. 태그 구성을 마치면 **저장**을 선택합니다.

# Amazon SQS 콘솔을 사용하여 대기열에서 Amazon SNS 주제 구독
<a name="sqs-configure-subscribe-queue-sns-topic"></a>

하나 이상의 Amazon SQS 대기열에서 Amazon SNS 주제를 구독할 수 있습니다. 메시지를 주제에 게시하면 Amazon SNS는 구독 중인 각 대기열에 그 메시지를 전송합니다. Amazon SQS는 구독을 관리하고 필요한 권한을 처리합니다. Amazon SNS에 대한 자세한 내용은 *Amazon Simple Notification Service 개발자 설명서*의 [Amazon SNS란 무엇입니까?](https://docs.aws.amazon.com/sns/latest/dg/welcome.html)를 참조하세요.

Amazon SQS 대기열에서 Amazon SNS 주제를 구독하면 Amazon SNS는 HTTPS를 사용하여 메시지를 Amazon SQS로 전달합니다. 암호화된 Amazon SQS 대기열과 함께 Amazon SNS를 사용하는 방법에 대한 자세한 내용은 [AWS 서비스에 대한 KMS 권한 구성](sqs-key-management.md#compatibility-with-aws-services) 섹션을 참조하세요.

**중요**  
Amazon SQS는 액세스 정책당 최대 20개의 문을 지원합니다. Amazon SNS 주제를 구독하면 이러한 명령문이 하나 추가됩니다. 이 개수를 초과하면 주제 구독 전송이 실패합니다.

**대기열에서 Amazon SNS 주제를 구독하는 방법(콘솔)**

1. [https://console.aws.amazon.com/sqs/](https://console.aws.amazon.com/sqs/)에서 Amazon SQS 콘솔을 엽니다.

1. 탐색 창에서 **대기열**을 선택합니다.

1. 대기열 목록에서 Amazon SNS 주제를 구독할 대기열을 선택합니다.

1. **작업(Actions)**에서 **Amazon SNS 주제 구독(Subscribe to Amazon SNS topic)**을 선택합니다.

1. **이 대기열 메뉴에 사용 가능한 Amazon SNS 주제 지정**에서 대기열에 대해 Amazon SNS 주제를 선택합니다.

   SNS 주제가 나열되지 않으면 **Amazon SNS 주제 ARN 입력**을 선택한 다음 주제의 Amazon 리소스 이름(ARN)을 입력합니다.

1. **저장**을 선택합니다.

1. 구독을 확인하려면 주제에 메시지를 게시하고 대기열에서 메시지를 확인합니다. 자세한 내용은 **Amazon Simple Notification Service 개발자 안내서의 [Amazon SNS 메시지 게시](https://docs.aws.amazon.com/sns/latest/dg/sns-publishing.html)를 참조하세요.

## 교차 계정 구독
<a name="cross-account-subscriptions"></a>

Amazon SQS 대기열과 Amazon SNS 주제가 다른 경우 AWS 계정추가 권한이 필요합니다.

**주제 소유자(계정 A)**

Amazon SNS 주제의 액세스 정책을 수정하여 Amazon SQS 대기열의 구독 AWS 계정 을 허용합니다. 정책 문 예시:

```
{
  "Effect": "Allow",
  "Principal": { "AWS": "arn:aws:iam::111122223333:root" },
  "Action": "sns:Subscribe",
  "Resource": "arn:aws:sns:us-east-1:123456789012:MyTopic"
}
```

이 정책은 `111122223333` 계정이 `MyTopic`을 구독하도록 허용합니다.

**대기열 소유자(계정 B)**

Amazon SNS 주제가 메시지를 전송할 수 있도록 Amazon SQS 대기열의 액세스 정책을 수정합니다. 정책 문 예시:

```
{
  "Effect": "Allow",
  "Principal": { "Service": "sns.amazonaws.com" },
  "Action": "sqs:SendMessage",
  "Resource": "arn:aws:sqs:us-east-1:111122223333:MyQueue",
  "Condition": {
    "ArnEquals": { "aws:SourceArn": "arn:aws:sns:us-east-1:123456789012:MyTopic" }
  }
}
```

이 정책은 `MyTopic`이 `MyQueue`에 메시지를 보내도록 허용합니다.

## 교차 리전 구독
<a name="cross-region-subscriptions"></a>

다른의 Amazon SNS 주제를 구독하려면 다음을 AWS 리전확인하세요.
+ Amazon SNS 주제의 액세스 정책이 교차 리전 구독을 허용합니다.
+ Amazon SQS 대기열의 액세스 정책이 Amazon SNS 주제가 서로 다른 리전에 메시지를 전송하도록 허용합니다.

자세한 내용은 [ Amazon Simple Notification Service 개발자 안내서의 다른 리전에 있는 Amazon SQS 대기열 또는 함수로 Amazon SNS Amazon SQS 메시지 전송 AWS Lambda](https://docs.aws.amazon.com/sns/latest/dg/sns-cross-region-delivery.html)을 참조하세요. ** 

# AWS Lambda 함수를 트리거하도록 Amazon SQS 대기열 구성
<a name="sqs-configure-lambda-function-trigger"></a>

Lambda 함수를 사용하여 Amazon SQS 대기열의 메시지를 처리할 수 있습니다. Lambda는 대기열을 폴링하고 함수를 동기적으로 간접 호출하여 메시지 배치를 이벤트로 전달합니다.

**가시성 제한 시간 구성**   
대기열의 가시성 제한 시간을 [함수 제한 시간](https://docs.aws.amazon.com/lambda/latest/dg/configuration-function-common.html#configuration-common-summary)의 6배 이상으로 설정합니다. 이렇게 하면 이전 배치를 처리하는 동안 함수에 스로틀링이 발생하는 경우 재시도할 시간이 Lambda에 충분히 주어집니다.

**Dead Letter Queue(DLQ) 사용**  
Lambda 함수가 처리하지 못하는 메시지를 캡처할 Dead Letter Queue(DLQ)를 지정합니다.

**여러 대기열 및 함수 처리**  
Lambda 함수는 각 대기열에 대해 별도의 이벤트 소스를 생성하여 여러 대기열을 처리할 수 있습니다. 여러 Lambda 함수를 동일한 대기열에 연결할 수도 있습니다.

**암호화된 대기열에 대한 권한**  
암호화된 대기열을 Lambda 함수와 연결하지만 Lambda가 메시지를 폴링하지 않는 경우 Lambda 실행 역할에 `kms:Decrypt` 권한을 추가합니다.

**제한 사항**  
대기열과 Lambda 함수는 같은 AWS 리전에 있어야 합니다.  
기본 키(Amazon SQS용AWS 관리형 KMS 키)를 사용하는 [암호화된 대기열](sqs-server-side-encryption.md)은 다른에서 Lambda 함수를 호출할 수 없습니다 AWS 계정. Amazon SQS

구현 세부 정보는 *AWS Lambda 개발자 안내서*의 [Amazon SQS에서 AWS Lambda 사용](https://docs.aws.amazon.com/lambda/latest/dg/with-sqs.html)을 참조하세요.

## 사전 조건
<a name="configure-lambda-function-trigger-prerequisites"></a>

Lambda 함수 트리거를 구성하려면 다음 요구 사항을 충족해야 합니다.
+ 사용자를 사용하는 경우 Amazon SQS 역할에 다음 권한이 포함되어야 합니다.
  + `lambda:CreateEventSourceMapping`
  + `lambda:ListEventSourceMappings`
  + `lambda:ListFunctions`
+ Lambda 실행 역할에는 다음 권한이 포함되어야 합니다.
  + `sqs:DeleteMessage`
  + `sqs:GetQueueAttributes`
  + `sqs:ReceiveMessage`
+ 암호화된 대기열을 Lambda 함수와 연결하는 경우 Lambda 실행 역할에 `kms:Decrypt` 권한을 추가합니다.

자세한 내용은 [Amazon SQS의 액세스 관리 개요](sqs-overview-of-managing-access.md) 단원을 참조하십시오.

**Lambda 함수를 트리거하는 대기열을 구성하려면(콘솔)**

1. [https://console.aws.amazon.com/sqs/](https://console.aws.amazon.com/sqs/)에서 Amazon SQS 콘솔을 엽니다.

1. 탐색 창에서 **대기열**을 선택합니다.

1. **대기열** 페이지에서 구성할 대기열을 선택합니다.

1. 대기열 페이지에서 **Lambda 트리거** 탭을 선택합니다.

1. **Lambda 트리거** 페이지에서 Lambda 트리거를 선택합니다.

   목록에 필요한 Lambda 트리거가 포함되어 있지 않은 경우 **Lambda 함수 트리거 구성**을 선택합니다. Lambda 함수의 Amazon 리소스 이름(ARN)을 입력하거나 기존 리소스를 선택합니다. 그런 다음 **저장**을 선택합니다.

1. **저장**을 선택합니다. 콘솔에서 구성을 저장하고 대기열의 **세부 정보** 페이지를 표시합니다.

   **세부 정보** 페이지의 **Lambda 트리거** 탭에는 Lambda 함수와 해당 상태가 표시됩니다. Lambda 함수가 대기열에 연결되기까지 약 1분 정도 소요됩니다.

1. 구성 결과를 확인하려면 [대기열에 메시지를 전송](creating-sqs-standard-queues.md#sqs-send-messages)한 후 Lambda 콘솔에서 트리거된 Lambda 함수를 확인합니다.

# Amazon EventBridge를 사용하여 AWS 서비스에서 Amazon SQS로 알림 자동화 Amazon SQS
<a name="sqs-automating-using-eventbridge"></a>

Amazon EventBridge를 사용하면 애플리케이션 문제 또는 리소스 변경과 같은 이벤트를 거의 실시간으로 자동화 AWS 서비스 하고 대응할 수 있습니다.
+ 규칙을 생성하여 특정 이벤트를 필터링하고 규칙이 이벤트와 일치할 때 자동화된 작업을 정의할 수 있습니다.
+ EventBridge는 JSON 형식으로 이벤트를 수신하는 Amazon SQS 표준 및 FIFO 대기열을 포함한 여러 대상을 지원합니다.

자세한 정보는 *[Amazon EventBridge 사용 설명서](https://docs.aws.amazon.com/eventbridge/latest/userguide/)*의 [Amazon EventBridge 대상](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-targets.html)을 참조하세요.

# Amazon SQS를 사용하여 속성을 포함하는 메시지 전송
<a name="sqs-using-send-message-with-attributes"></a>

표준 대기열 및 FIFO 대기열의 경우, 메시지에 타임스탬프, 지리 공간 데이터, 서명 및 식별자와 같은 구조화된 메타데이터를 포함할 수 있습니다. 자세한 내용은 [Amazon SQS 메시지 속성](sqs-message-metadata.md#sqs-message-attributes) 단원을 참조하십시오.

**Amazon SQS 콘솔을 사용하여 속성이 있는 메시지를 대기열로 전송하려면**

1. [https://console.aws.amazon.com/sqs/](https://console.aws.amazon.com/sqs/)에서 Amazon SQS 콘솔을 엽니다.

1. 탐색 창에서 **대기열**을 선택합니다.

1. **대기열** 페이지에서 대기열을 선택합니다.

1. [**메시지 전송 및 수신(Send and receive messages)**]을 선택합니다.

1. 메시지 속성 파라미터를 입력합니다.

   1. 이름 텍스트 상자에 최대 256자의 고유한 이름을 입력합니다.

   1. 속성 유형으로는 **문자열**, **숫자** 또는 **2진수**를 선택합니다.

   1. (선택 사항) 사용자 지정 데이터 유형을 입력합니다. 예를 들어, **번호**에 **byte**, **int** 또는 **float**를 사용자 지정 데이터 유형으로 추가할 수 있습니다.

   1. 값 텍스트 상자에 메시지 속성 값을 입력합니다.  
![\[메시지 속성 섹션을 표시하는 Amazon SQS 콘솔입니다.\]](http://docs.aws.amazon.com/ko_kr/AWSSimpleQueueService/latest/SQSDeveloperGuide/images/sqs-tutorials-sending-message-with-attributes.png)

1. 다른 메시지 속성을 추가하려면 **새 속성 추가**를 선택합니다.  
![\[메시지 속성 섹션에 제거 버튼이 표시된 Amazon SQS 콘솔입니다.\]](http://docs.aws.amazon.com/ko_kr/AWSSimpleQueueService/latest/SQSDeveloperGuide/images/sqs-tutorials-sending-message-with-attributes-custom-attribute.png)

1. 메시지를 전송하기 전에 언제든지 속성 값을 수정할 수 있습니다.

1. 속성을 삭제하려면 **제거**를 선택합니다. 첫 번째 속성을 삭제하려면 **메시지 속성**을 닫습니다.

1. 속성을 메시지에 추가했으면 **메시지 전송**을 선택합니다. 메시지가 전송되고 콘솔에 성공 메시지가 표시됩니다. 보낸 메시지의 메시지 속성에 대한 정보를 보려면 **세부 정보 보기**를 선택합니다. **완료**를 선택하여 **메시지 세부 정보** 대화 상자를 닫습니다.