Amazon S3 이벤트 알림이 서버 측 암호화를 사용하는 Amazon SQS 대기열에 전송되지 않는 이유는 무엇인가요?

4분 분량
0

Amazon Simple Storage Service(S3) 이벤트 알림이 서버 측 암호화(SSE) Amazon Simple Queue Service(Amazon SQS) 대기열로 전달되지 않습니다.

해결 방법

다음 단계를 완료하여 S3 이벤트 알림을 구성하고 서버 측 암호화(SSE)를 사용하는 Amazon SQS 대기열로 전송하세요.

고객 관리형 AWS KMS 키 생성 및 키 정책 구성

AWS Key Management Service(AWS KMS) 키로 Amazon SQS 대기열을 암호화해야 합니다. 그런 다음 암호화된 대기열로 작업할 수 있도록 Amazon S3 서비스 주체에 권한을 부여합니다.

참고: 기본 AWS 관리형 KMS 키는 수정할 수 없습니다. 대신 이 프로세스에 고객 관리 키를 사용해야 합니다. 또한 지정된 서비스 주체에 대한 액세스를 허용하려면 AWS KMS 키에 권한을 추가해야 합니다.

Amazon S3 서비스 주체에 권한을 부여하려면 이 문을 고객 관리 키 정책에 추가합니다.

{  "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": "*"
    },
    {
      "Sid": "Enable IAM User Permissions",
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::"111122223333":root"
      },
      "Action": "kms:*",
      "Resource": "*"
    }
  ]
}

참고: **"arn:aws:iam::"111122223333":root"**을 사용자 ARN으로 바꿉니다.

SQS 대기열 생성 및 Amazon S3 권한 부여

  1. SSE를 사용하도록 구성된 Amazon SQS 대기열을 생성합니다. 자세한 내용을 보려면 대기열에 대한 서버 측 암호화(SSE) 구성(콘솔)을 참조하세요.
  2. Amazon S3에서 대기열에 메시지를 보낼 수 있도록 하려면 이 사용 권한 문을 SQS 대기열에 추가합니다.
{  "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:sqs-s3-kms-same-account",
      "Condition": {
        "StringEquals": {
          "aws:SourceAccount": "123456789"
        },
        "ArnLike": {
          "aws:SourceArn": "arn:aws:s3:*:*:hellobucket"
        }
      }
    }
  ]
}

참고: 리소스 값을 SQS 대기열 ARN으로, aws:SourceAccount를 AWS 소스 계정 ID로, aws:SourceArn을 Amazon S3 버킷 ARN으로 바꾸세요.

앞의 예에서 고객 계정 123456789에 대한 S3 버킷 hellobucketObjectCreated 이벤트 알림을 지정된 SQS 대기열로 보낼 수 있습니다. 암호화된 SQS 대기열로 작업하는 데 필요한 권한에 대한 자세한 내용을 보려면 키 관리를 참조하세요.

S3 이벤트 생성

버킷에 대한 Amazon S3 이벤트를 추가하려면 다음 단계를 완료하세요.

  1. S3 콘솔을 연 다음, 하이퍼링크된 S3 버킷 이름을 선택합니다.
  2. 프로퍼티 탭에서 이벤트 알림 생성을 선택합니다.
  3. 이벤트 알림 생성 페이지에서 이 정보를 입력합니다.
    이벤트 이름에 이름을 입력합니다.
    이벤트 유형에 알림을 받을 이벤트 유형을 선택합니다.
    대상SQS 대기열를 선택합니다.
    SQS 대기열에 사용자의 대기열를 선택합니다.
  4. 변경 사항 저장을 선택합니다.

Amazon S3 이벤트 유형이 올바르게 구성되었는지 확인합니다.

Amazon S3 이벤트 알림을 구성할 때 지원되는 이벤트 유형을 지정해야 Amazon S3에서 알림을 보내도록 할 수 있습니다. 지정하지 않은 이벤트 유형이 Amazon S3 버킷에서 발생하면 Amazon S3에서 알림을 보내지 않습니다.

객체 키 이름 필터가 URL 인코딩 형식인지 확인하세요.

이벤트 알림이 객체 키 이름 필터링을 사용하도록 구성된 경우 특정 접두사 또는 접미사가 있는 개체에 대해서만 알림이 게시됩니다.

접두사 또는 접미사에 특수 문자를 사용하는 경우 URL 인코딩 형식으로 입력해야 합니다. 자세한 내용을 보려면 객체 키 이름 필터링을 사용하여 이벤트 알림 구성을 참조하세요.

참고: 와일드카드 문자("*")를 필터의 접두사나 접미사로 사용하여 어떤 문자도 나타낼 수 없습니다.

모든 이벤트 대상이 존재하는지 확인

"Unable to validate the following destination configurations" 오류는 Amazon S3 이벤트 알림 버킷 대상이 존재하지 않을 때 발생합니다.

더 이상 존재하지 않는 대상에 이벤트를 보내도록 이벤트 알림을 구성한 경우에는 이러한 이벤트를 제거해야 합니다. 이벤트 알림 구성을 업데이트하기 전에 이벤트를 제거해야 합니다.

참고: PutBucketNotificationConfiguration API를 사용하여 대상이 존재하지 않는 모든 이벤트를 삭제하는 것이 좋습니다.

S3 버킷 및 SQS 대기열 영역 확인

한 AWS 리전의 S3 버킷에서 다른 리전의 Amazon SQS 대기열로 알림을 보낼 수 없습니다. 대신 다른 리전에 있는 Amazon SQS 대기열이 있는 S3 버킷 대상으로 Amazon SNS(Amazon Simple Notification Service) 주제를 설정하세요. Amazon SNS는 Amazon SQS 대기열 및 AWS Lambda 기능에 대한 리전 간 알림 전달을 지원합니다.

자세한 내용을 보려면 다른 리전의 Amazon SQS 대기열 또는 Lambda 함수로 Amazon SNS 메시지 보내기를 참조하세요.

메시지가 Amazon SQS 대기열로 전송되었는지 확인합니다.

Amazon CloudWatch NumberOfMessagesSent 메트릭을 사용하여 메시지가 Amazon SQS 대기열로 전송되었는지 확인합니다.

자세한 내용을 보려면 Amazon SQS 대기열에서 메시지를 받지 못하는 이유는 무엇인가요?를 참조하세요.

AWS 지원으로 문제 해결

앞의 문제 해결 단계로 문제가 해결되지 않으면 AWS 지원에 문의하세요. 서신에 실패한 API 호출의 시간대와 함께 RequestId타임스탬프를 포함하세요.

관련 정보

Amazon SQS 구독이 Amazon SNS 주제에서 알림을 성공적으로 수신하려면 어떻게 해야 하나요?

Amazon S3 이벤트 알림

실습: 알림을 위한 버킷 구성하기(SNS 주제 또는 SQS 대기열)

AWS 공식
AWS 공식업데이트됨 5달 전