Amazon S3 이벤트 알림을 생성할 때 "Unable to validate the following destination configurations"라는 오류가 발생하는 이유는 무엇인가요?

4분 분량
0

Amazon Simple Storage Service(S3) 이벤트 알림을 생성할 때 발생하는 다음 오류를 해결하고 싶습니다. "Unable to validate the following destination configurations when creating an Amazon S3 Event Notification".

간략한 설명

이 오류를 방지하려면 다음 조건을 충족해야 합니다.

  • Amazon S3 이벤트 알림을 생성하는 경우, 지정된 대상에 S3가 대상에 대해 알림을 게시할 수 있도록 하는 리소스 기반 정책이 있어야 합니다.
  • 대상의 AWS 리전은 S3 버킷의 리전과 동일해야 합니다.
  • 대상을 AWS Key Management Service(AWS KMS) 키로 암호화한 경우, 해당 키 정책이 S3에 대한 액세스를 허용해야 합니다.

이벤트 알림 구성을 업데이트하면 Amazon S3가 모든 이벤트 대상이 존재하는지 검증합니다. 또한 S3는 이벤트 대상에 S3가 이벤트 대상 유형에 따라 다음 작업을 수행할 수 있도록 하는 리소스 기반 정책이 있는지 확인합니다.

  • 이벤트 게시
  • 메시지 전송
  • 함수 간접 호출

S3는 새 이벤트 대상과 업데이트 중에 삭제하지 않은 기존 이벤트 대상에 대해 이러한 확인을 수행합니다. 이러한 확인에 실패하면 "Unable to validate the following destination configurations" 오류가 표시될 수 있습니다.

참고: AWS Command Line Interface(AWS CLI) 명령을 실행할 때 오류가 발생하는 경우 AWS CLI 오류 해결을 참조하세요. 또한 최신 AWS CLI 버전을 사용하고 있는지 확인하세요.

해결 방법

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

이 오류는 해당 버킷의 이벤트 대상이 존재하지 않는 경우에 발생합니다.

기존 이벤트 알림이 이벤트를 더 이상 존재하지 않는 대상으로 보낸다면, 이벤트 알림 구성을 업데이트하기 전에 해당 이벤트를 삭제하세요. 알림은 버킷에 있을 수 있지만, 이벤트 알림 구성을 업데이트한 후 대상을 삭제했기 때문에 대상은 존재하지 않습니다.

동일한 PutBucketNotificationConfiguration API를 사용하여 대상이 존재하지 않는 모든 이벤트를 삭제하는 것이 좋습니다. PutBucketNotificationConfiguration API는 Amazon S3 콘솔, AWS CLI 또는 AWS SDK를 사용하여 직접적으로 호출할 수 있습니다.

이벤트 대상에 유효한 리소스 기반 정책이 있는지 확인하세요

다음 AWS 서비스에 메시지를 게시하려면 Amazon S3에 관련 API를 직접적으로 호출하는 데 필요한 권한을 부여하세요.

  • Amazon Simple Notification Service(SNS) 주제
  • Amazon Simple Queue Service(Amazon SQS) 대기열
  • AWS Lambda 함수

Amazon SNS 주제 대상 정책의 예:

{
    "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:Region:account-id:queue-name",
        "Condition": {
            "ArnLike": {
                "aws:SourceArn": "arn:aws:s3:*:*:awsexamplebucket1"
            },
            "StringEquals": {
                "aws:SourceAccount": "bucket-owner-account-id"
            }
        }
    }]
}

Amazon 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:Region:account-id:queue-name",
        "Condition": {
            "ArnLike": {
                "aws:SourceArn": "arn:aws:s3:*:*:awsexamplebucket1"
            },
            "StringEquals": {
                "aws:SourceAccount": "bucket-owner-account-id"
            }
        }
    }]
}

Lambda 함수 대상 정책의 예:

{
    "Version": "2012-10-17",
    "Id": "example-ID",
    "Statement": [

        {
            "Sid": "s3invoke",
            "Effect": "Allow",
            "Principal": {
                "Service": "s3.amazonaws.com"
            },
            "Action": "lambda:InvokeFunction",
            "Resource": "arn:aws:lambda:Region:account-id:function:function-name",
            "Condition": {
                "StringEquals": {
                    "AWS:SourceAccount": "bucket-owner-account-id"
                },
                "ArnLike": {
                    "AWS:SourceArn": "arn:aws:s3:::awsexamplebucket1"
                }
            }
        }
    ]
}

버킷에 새 이벤트를 추가하는 경우, 새 이벤트에 유효한 리소스 기반 정책이 있는지 확인하세요.

Amazon SNS 주제 또는 Amazon SQS 대기열 권한에 대해 자세히 알아보려면 SNS 주제 또는 SQS 대기열에 메시지를 게시할 수 있는 권한 부여하기를 참조하세요.

유효한 정책을 통해 Lambda 함수를 업데이트하려면 튜토리얼: Amazon S3 트리거를 사용하여 Lambda 함수 간접 호출을 참조하세요.

참고: S3 콘솔을 사용하여 이벤트 알림을 켜는 경우, S3가 정책을 이벤트에 추가하기 전에 정책을 업데이트하려고 합니다.

이벤트 대상 리소스 기반 정책이 유효한데 동일한 오류가 발생한다면 유효한 리소스 기반 정책에 관한 기존의 모든 이벤트 대상을 확인하세요. 버킷의 이벤트 알림 구성을 업데이트한 후 이벤트 대상에 대한 리소스 기반 정책을 수정한 경우 이 오류가 발생합니다. 오류를 방지하려면 모든 권한이 유효한지 확인하고, 대상이 유효하지 않은 이벤트를 삭제하세요.

AWS KMS 키 정책이 AWS KMS 암호화 주제 및 대기열에 대해 유효한지 확인하세요

SQS 또는 SNS 대상에 대해 AWS KMS 암호화를 활성화하는 경우, 고객 관리형 키 정책을 업데이트하여 S3가 키를 사용할 수 있도록 하세요. 자세한 내용을 알아보려면 AWS KMS 키 정책을 참조하세요.

aws/snsaws/sqs와 같은 AWS 관리형 키는 지원되지 않습니다. 이벤트 대상에서 AWS 관리형 키를 사용하는 경우, 대상을 고객 관리 키를 사용하도록 업데이트해야 합니다. 그런 다음 키 정책을 업데이트하세요.

AWS KMS 키 정책의 예:

{
    "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": "*"
    }]
}

관련 정보

대상 SNS 주제에 대한 IAM 정책

대상 SQS 대기열에 대한 IAM 정책

AWS 공식
AWS 공식업데이트됨 6달 전
댓글 없음

관련 콘텐츠