내용으로 건너뛰기

Amazon S3 이벤트 알림을 범용 버킷과 함께 사용할 때 ‘Unable to validate the following destination configurations’ 오류가 발생하는 이유는 무엇입니까?

4분 분량
0

Amazon Simple Storage Service(Amazon S3) 이벤트 알림을 사용하여 알림 구성을 추가할 때 ‘Unable to validate the following destination configurations when creating an Amazon S3 Event Notification’ 오류 메시지가 표시됩니다. 이 문제를 파악하고 해결하고 싶습니다.

해결 방법

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

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

업데이트 중에 Amazon S3는 새 이벤트 대상과 업데이트 시 삭제하지 않은 기존 이벤트 대상에 대해 검사를 수행합니다. 검사에 실패하면 ‘Unable to validate the following destination configurations’ 오류가 표시될 수 있습니다.

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

참고: 이벤트 알림은 범용 버킷에만 지원됩니다. 디렉터리 버킷과 테이블 버킷은 이벤트 알림을 지원하지 않습니다. 이벤트 알림 기능이 필요한 경우 범용 버킷을 사용하십시오.

AWSSupport-TroubleshootS3EventNotifications 자동화 런북 실행

이벤트 알림 구성을 추가할 때 발생하는 문제를 해결하려면 AWSSupport-TroubleshootS3EventNotifications를 사용하는 것이 좋습니다.

참고:

  • 런북은 버킷 소유자가 자동화를 실행하는 AWS 계정도 소유하고 있는 경우에만 이벤트 알림 구성을 평가할 수 있습니다.
  • 런북은 다른 계정에서 호스팅하는 대상 리소스에 대한 정책을 평가할 수 없습니다.

자동화를 실행하려면 다음 단계를 완료하십시오.

  1. AWS Systems Manager 콘솔을 연 다음, AWSSupport-TroubleshootS3EventNotifications를 엽니다.
  2. 자동화 실행을 선택합니다.
  3. 입력 파라미터를 입력합니다.
  4. 실행을 선택합니다.
  5. 출력 섹션에서 결과를 검토합니다.

최종 보고서에는 S3 버킷을 대상 이벤트 알림으로 사용하여 구성된 리소스가 포함됩니다. S3 이벤트 알림 문제가 계속 발생하는 경우 다음 해결 방법을 사용하여 문제를 수동으로 해결하십시오.

더 이상 존재하지 않는 대상의 이벤트 삭제

S3 이벤트 알림 대상이 더 이상 존재하지 않는 경우 해당 알림의 구성을 삭제해야 합니다. 예를 들어, Lambda 함수와 같은 대상을 삭제할 때 해당 이벤트 알림 설정을 삭제하면 범용 버킷에 그대로 남아 있습니다. Amazon S3 콘솔, AWS CLI 또는 PutBucketNotificationConfiguration API를 사용하여 오래된 이벤트 알림을 삭제할 수 있습니다. PutBucketNotificationConfiguration API를 사용하여 모든 이벤트 알림을 관리하는 것이 좋습니다.

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

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

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

Amazon SNS 주제 대상 정책의 예:

{
    "Version": "2012-10-17",
    "Id": "example-ID",
    "Statement": [
        {
            "Sid": "Example SNS topic policy",
            "Effect": "Allow",
            "Principal": {
                "Service": "s3.amazonaws.com"
            },
            "Action": [
                "SNS:Publish"
            ],
            "Resource": "SNS-topic-ARN",
            "Condition": {
                "ArnLike": {
                    "aws:SourceArn": "arn:aws:s3:*:*:bucket-name"
                },
                "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 함수 호출을 참조하십시오.

Amazon S3 콘솔을 사용하여 이벤트 알림을 활성화하면 Amazon S3는 정책을 이벤트에 추가하기 전에 정책 업데이트를 시도합니다. 이벤트 대상 리소스 기반 정책이 유효한데 동일한 오류가 발생하는 경우 이벤트 대상에서 유효한 리소스 기반 정책을 확인하십시오. 버킷의 이벤트 알림 구성을 업데이트한 후 이벤트 대상에 대한 리소스 기반 정책을 수정하면 검증이 실패합니다. 이 문제를 방지하려면 모든 권한이 유효한지 확인하고, 대상이 유효하지 않은 이벤트를 삭제하십시오.

AWS KMS 키 정책이 AWS KMS 암호화 주제 및 대기열에 대해 올바른지 확인

SQS 또는 SNS 대상에 대해 AWS Key Management Service(AWS KMS) 암호화를 활성화한 경우 Amazon S3에서 키를 사용할 수 있도록 고객 관리형 키 정책을 업데이트하십시오.

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 주제에 대한 AWS Identity and Access Management(IAM) 정책

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

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

관련 콘텐츠