

# 대상에 이벤트 알림 메시지를 게시할 권한 부여
<a name="grant-destinations-permissions-to-s3"></a>

관련 API를 호출하여 SNS 주제, SQS 대기열 또는 Lambda 함수에 메시지를 게시할 수 있는 권한을 Amazon S3 보안 주체에 부여해야 합니다. 이는 Amazon S3가 이벤트 알림 메시지를 대상에 게시할 수 있도록 하기 위한 것입니다.

대상에 이벤트 알림 메시지를 게시하는 문제를 해결하려면 [Amazon Simple Notification Service 주제에 Amazon S3 이벤트 알림을 게시할 때의 문제 해결](https://repost.aws/knowledge-center/sns-not-receiving-s3-event-notifications)을 참조하십시오.

**Topics**
+ [AWS Lambda 함수 호출 권한 부여](#grant-lambda-invoke-permission-to-s3)
+ [SNS 주제 또는 SQS 대기열로 메시지를 게시할 권한 부여](#grant-sns-sqs-permission-for-s3)

## AWS Lambda 함수 호출 권한 부여
<a name="grant-lambda-invoke-permission-to-s3"></a>

Amazon S3는 Lambda 함수를 호출하고 이벤트 메시지를 인수로 제공하여 AWS Lambda에 이벤트 메시지를 게시합니다.

Amazon S3 콘솔을 사용하여 Amazon S3 버킷에서 Lambda 함수에 대한 이벤트 알림을 구성할 때 콘솔은 Lambda 함수에 대해 필요한 권한을 설정합니다. 이는 Amazon S3가 버킷에서 함수를 호출할 수 있는 권한을 갖도록 하기 위한 것입니다. 자세한 내용은 [Amazon S3 콘솔을 사용하여 이벤트 알림 사용 설정 및 구성](enable-event-notifications.md) 섹션을 참조하세요.

또한, AWS Lambda에서 Lambda 함수를 호출할 수 있는 권한을 Amazon S3에 부여할 수도 있습니다. 자세한 내용은 *AWS Lambda 개발자 안내서*의 [자습서: Amazon S3에서 AWS Lambda 사용](https://docs.aws.amazon.com/lambda/latest/dg/with-s3-example.html)을 참조하십시오.

## SNS 주제 또는 SQS 대기열로 메시지를 게시할 권한 부여
<a name="grant-sns-sqs-permission-for-s3"></a>

Amazon S3에 SNS 주제 또는 SQS 대기열에 메시지를 게시할 수 있는 권한을 부여하려면 대상 SNS 주제 또는 SQS 대기열에 AWS Identity and Access Management(IAM) 정책을 연결합니다.

SNS 주제 또는 SQS 대기열에 정책을 연결하는 방법에 대한 예제는 [연습: 알림용 버킷 구성(SNS 주제 또는 SQS 대기열)](ways-to-add-notification-config-to-bucket.md) 단원을 참조하십시오. 권한에 대한 자세한 내용은 다음 섹션을 참조하십시오.
+ *Amazon Simple Notification Service 개발자 안내서*의 [Amazon SNS 액세스 제어 사례](https://docs.aws.amazon.com/sns/latest/dg/AccessPolicyLanguage_UseCases_Sns.html)
+ *Amazon Simple Queue Service 개발자 안내서*의 [Amazon SQS의 Identity and Access Management](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/UsingIAM.html)

### 대상 SNS 주제에 대한 IAM 정책
<a name="sns-topic-policy"></a>

다음은 대상 SNS 주제에 연결하는 AWS Identity and Access Management(IAM) 정책의 예제입니다. 이 정책을 사용하여 이벤트 알림에 대한 대상 Amazon SNS 주제를 설정하는 방법에 대한 지침은 [연습: 알림용 버킷 구성(SNS 주제 또는 SQS 대기열)](ways-to-add-notification-config-to-bucket.md) 섹션을 참조하십시오.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Id": "example-ID",
    "Statement": [
        {
            "Sid": "Example SNS topic policy",
            "Effect": "Allow",
            "Principal": {
                "Service": "s3.amazonaws.com"
            },
            "Action": [
                "SNS:Publish"
            ],
            "Resource": "arn:aws:sns:us-east-1:{{111122223333}}:{{example-sns-topic}}",
            "Condition": {
                "ArnEquals": {
                    "aws:SourceArn": "arn:aws:s3:::{{amzn-s3-demo-bucket}}"
                },
                "StringEquals": {
                    "aws:SourceAccount": "{{bucket-owner-123456789012}}"
                }
            }
        }
    ]
}
```

------

### 대상 SQS 대기열에 대한 IAM 정책
<a name="sqs-queue-policy"></a>

다음은 대상 SQS 대기열에 연결하는 IAM 정책의 예제입니다. 이 정책을 사용하여 이벤트 알림에 대한 대상 Amazon SQS 대기열을 설정하는 방법에 대한 지침은 [연습: 알림용 버킷 구성(SNS 주제 또는 SQS 대기열)](ways-to-add-notification-config-to-bucket.md) 섹션을 참조하십시오.

이 정책을 사용하려면 Amazon SQS 대기열 ARN, 버킷 이름 및 버킷 소유자의 AWS 계정 ID를 업데이트해야 합니다.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Id": "example-ID",
    "Statement": [
        {
            "Sid": "example-statement-ID",
            "Effect": "Allow",
            "Principal": {
                "Service": "s3.amazonaws.com"
            },
            "Action": [
                "SQS:SendMessage"
            ],
            "Resource": "arn:aws:sqs:{{us-east-1}}:{{111122223333}}:{{queue-name}}",
            "Condition": {
                "ArnLike": {
                    "aws:SourceArn": "arn:aws:s3:*:*:{{amzn-s3-demo-bucket}}"
                },
                "StringEquals": {
                    "aws:SourceAccount": "{{bucket-owner-123456789012}}"
                }
            }
        }
    ]
}
```

------

Amazon SNS 및 Amazon SQS IAM 정책 모두 `StringLike` 조건 대신, `ArnLike` 조건을 정책에 지정할 수 있습니다.

`ArnLike`를 사용하는 경우 ARN의 파티션, 서비스, 계정 ID, 리소스 유형, 부분 리소스 ID가 요청 컨텍스트의 ARN과 정확히 일치해야 합니다. 리전 및 리소스 경로만 부분 일치가 허용됩니다.

 `ArnLike` 대신 `StringLike`를 사용하는 경우 매칭 시 ARN 구조를 무시하고 와일드카드 문자로 대체된 부분에 관계없이 부분 일치를 허용합니다. 자세한 내용은 *IAM 사용 설명서*의 [IAM JSON 정책 요소](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition_operators.html)를 참조하십시오.

```
"Condition": {         
  "StringLike": { "aws:SourceArn": "arn:aws:s3:*:*:{{{{amzn-s3-demo-bucket}}}}" }
  }
```

### AWS KMS 키 정책
<a name="key-policy-sns-sqs"></a>

SQS 대기열 또는 SNS 주제가 AWS Key Management Service(AWS KMS) 고객 관리형 키로 암호화되는 경우 Amazon S3 서비스 보안 주체에게 암호화된 주제 또는 대기열을 사용할 수 있는 권한을 부여해야 합니다. Amazon S3 서비스 보안 주체에게 권한을 부여하려면 고객 관리형 키의 주요 정책에 다음 설명을 추가합니다.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Id": "example-ID",
    "Statement": [
        {
            "Sid": "example-statement-ID",
            "Effect": "Allow",
            "Principal": {
                "Service": "s3.amazonaws.com"
            },
            "Action": [
                "kms:GenerateDataKey",
                "kms:Decrypt"
            ],
            "Resource": "*"
        }
    ]
}
```

------

AWS KMS 키 정책에 대한 자세한 내용은 *AWS Key Management Service 개발자 안내서*에서 [AWS KMS에서 키 정책 사용](https://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html)을 참조하십시오.

Amazon SQS 및 Amazon SNS에 대해 AWS KMS의 서버 측 암호화를 사용하는 방법에 대한 자세한 내용은 다음을 참조하십시오.
+ *Amazon Simple Notification Service 개발자 안내서*의 [키 관리](https://docs.aws.amazon.com/sns/latest/dg/sns-key-management.html)
+ *Amazon Simple Queue Service 개발자 안내서*의 [키 관리](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-key-management.html)
+ *AWS 컴퓨팅 블로그*의 [AWS KMS를 활용하여 Amazon SNS에 게시된 메시지 암호화](https://aws.amazon.com/blogs/compute/encrypting-messages-published-to-amazon-sns-with-aws-kms/)