AWS DMS를 사용할 때 Amazon S3 엔드포인트 연결 테스트 실패 문제를 해결하려면 어떻게 해야 합니까?

최종 업데이트 날짜: 2020년 2월 4일

Amazon Simple Storage Service(Amazon S3)를 AWS Database Migration Service(AWS DMS) 작업의 소스 또는 대상 엔드포인트로 사용하고 있습니다. 엔드포인트 연결 테스트가 실패하여 오류 메시지를 받았습니다. 엔드포인트 연결 실패를 해결하려면 어떻게 해야 합니까?

간략한 설명

Amazon S3 엔드포인트를 사용하는 AWS Identity and Access Management(IAM) 역할에 대해 구성된 적절한 권한이 없는 경우 다음 로그 항목 중 하나가 표시됩니다.

메시지
테스트 엔드포인트 실패: 애플리케이션 상태: 1020912, 애플리케이션 메시지: S3 엔드포인트에 연결하지 못했습니다. 액세스가 거부되었습니다.
테스트 엔드포인트 실패: 애플리케이션 상태: 1020912, Application-Message: 버킷 나열 실패–dms 데이터베이스에 연결 실패., Application-Detailed-Message: 버킷 나열 실패–dms AWS가 버킷 나열 실패. 'AccessDenied' 예외로 인해 버킷 나열 실패, 메시지 '액세스 거부됨', 오류 유형 '15' AWS가 버킷 나열 실패. 재현할 수 없는 오류: 액세스 거부됨
테스트 엔드포인트 실패: Application-Status: 1020912, Application-Message: 데이터베이스에 연결 실패.
오류 세부 정보: [message = putDatabase 호출 실패, errType = ERROR_RESPONSE, status = 1020414, errMessage = 데이터베이스에 연결 실패., errDetails =]

해결 방법

이러한 오류를 해결하려면 Amazon S3 엔드포인트에 액세스하는 데 필요한 최소 IAM 권한을 부여합니다. Amazon S3 소스 및 대상 엔드포인트는 AWS DMS에 대한 최소 권한이 다릅니다.

Amazon S3 소스 엔드포인트에 대한 다음 IAM 정책 예제를 참조하십시오.

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
           
    "Action": [
                "s3:GetObject",    
                "s3:ListBucket"        
    ],
    
            "Resource": [
                "arn:aws:s3:::awsexamplebucket",   
                "arn:aws:s3:::awsexamplebucket/*" 
            ]
        }
    ]
}

참고: awsexamplebucket을 고유 버킷 이름으로 바꿉니다.

대상 엔드포인트로서의 Amazon S3에 대한 다음 IAM 정책 예제를 참조하십시오.

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "s3:PutObject",
                "s3:DeleteObject",
                "s3:PutObjectTagging"
            ],
            "Resource": [
                "arn:aws:s3:::awsexamplebucket/*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "s3:ListBucket"
            ],
            "Resource": [
                "arn:aws:s3:::awsexamplebucket"
            ]
        }
    ]
}

참고: awsexamplebucket을 고유 버킷 이름으로 바꿉니다.

중요:

권한 오류를 해결하려면 다음 단계를 따르십시오.

1.    IAM 역할에 Amazon S3 엔드포인트에 액세스하는 데 필요한 최소 권한이 있는지 확인합니다.

2.    Amazon S3 엔드포인트에 지정된 버킷 이름이 IAM 역할에 허용된 리소스와 일치하는지 확인합니다. 예를 들어 IAM 역할은 이전 예제 정책에서 awsexamplebucket과 같은 하나의 버킷에 대한 액세스만 허용합니다. 하지만 Amazon S3 엔드포인트의 [Bucket name]에 awsexamplebucket2를 지정하면 테스트 연결이 실패합니다.

3.    dms.amazonaws.com이 IAM 역할과 연결된 신뢰할 수 있는 엔터티인지 확인합니다. 자세한 내용은 기존 역할에 대한 신뢰 관계 편집 및 AWS DMS에 대한 다음 예제 신뢰 정책을 참조하십시오.

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "",
      "Effect": "Allow",
      "Principal": {
        "Service": "dms.amazonaws.com"
      },
      "Action": "sts:AssumeRole"
    }
  ]
}

4.    AWS Organizations를 사용하는 경우 사용된 IAM 역할이 Amazon S3에 대한 액세스를 허용하는 조직의 일부인지 확인합니다. 조직에서 액세스를 허용하지 않는 경우 AWS DMS는 해당 IAM 역할을 사용하여 Amazon S3 엔드포인트에 연결할 수 없습니다. 이는 역할에 필요한 모든 권한이 있더라도 마찬가지입니다. 조직에서 액세스를 허용하지 않는 경우 계정 관리자에게 문의하여 조직에 대한 Amazon S3 액세스를 허용하십시오.