Amazon S3 버킷에서 동기화 명령을 실행할 때 ListObjectsV2에 대한 액세스 거부됨 오류가 발생하는 이유는 무엇인가요?

2분 분량
0

aws s3 동기화 명령을 실행하여 Amazon Simple Storage Service(S3) 버킷으로 또는 버킷에서 객체를 복사하고 있습니다. 하지만 ListObjectsV2 API를 호출할 때 액세스 거부 오류가 발생합니다.

간략한 설명

sync 명령을 실행하면 Amazon S3에서 ListObjectsV2 API 호출을 발행하여 객체가 원본 또는 대상 버킷에 있는지 확인합니다. 객체가 두 버킷 모두에 존재하지 않는 경우 Amazon S3는 다음 API 호출을 수행합니다.

  • 버킷-버킷 간 작업에 대한 CopyObject 호출
  • 버킷에서 로컬로 작업을 위한 GetObject
  • 로컬에서 버킷으로의 작업을 위한 PutObject

해결 방법

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

IAM 정책 구성

참고: 이 해결 방법은 GetObjectPutObject 작업이 이미 AWS Identity Access Management(IAM) 사용자 또는 역할에 부여된 것으로 가정합니다. 이 해결 방법은 부적절한 ListBucket 권한 또는 요청자 지불에 대한 잘못된 동기화 명령 구문으로 인한 액세스 거부 오류를 해결하는 방법을 다룹니다.

객체를 복사하거나 복사할 Amazon S3 버킷에 대한 s3:ListBucket 권한이 있는지 확인합니다. ListObjectSv2 API 호출 작업을 수행하려면 이 권한이 있어야 합니다.

IAM 사용자 또는 역할이 다른 AWS 계정에 속해있다면, 사용자의 IAM 및 버킷 정책에서 s3:ListBucket 작업을 허용하는지 확인하세요. IAM 정책과 버킷 정책 모두에서 s3:ListBucket 권한이 있어야 합니다.

사용자 또는 역할이 버킷 소유자의 계정에 속해 있다면, s3:ListBucket을 허용하는 데 IAM 정책과 버킷 정책이 둘 다 필요하지 않습니다. 정책 중 하나만 있으면 s3:ListBucket 작업을 허용할 수 있습니다.

중요:IAM 정책 또는 버킷 정책에서 이미s3:ListBucket 작업을 허용했다면, 다른 정책에서 작업을 명시적으로 거부하는 문이 있는지 확인하세요. 명시적 거부 문은 허용 문보다 우선합니다.

다음 예제 IAM 정책s3:ListBucket 권한을 부여합니다.

{  
  "Version": "2012-10-17",  
  "Statement": [{  
    "Sid": "Stmt1546506260896",  
    "Action": "s3:ListBucket",  
    "Effect": "Allow",  
    "Resource": "arn:aws:s3:::AWSDOC-EXAMPLE-BUCKET"  
  }]  
}

다음 예제 버킷 정책은 사용자에게 arn:aws:iam::123456789012:user/testuser 사용자에게 s3:ListBucket에 대한 권한을 부여합니다.

{  
  "Id": "Policy1546414473940",  
  "Version": "2012-10-17",  
  "Statement": [{  
    "Sid": "Stmt1546414471931",  
    "Action": "s3:ListBucket",  
    "Effect": "Allow",  
    "Resource": "arn:aws:s3:::AWSDOC-EXAMPLE-BUCKET",  
    "Principal": {  
      "AWS": [  
        "arn:aws:iam::123456789012:user/testuser"  
      ]  
    }  
  }]  
}

요청자 지불에 동기화 명령 사용

버킷이 다른 계정에 속해 있고 요청자 지불이 활성화된 경우 버킷 정책과 IAM 정책 모두 ListObjectsV2 권한을 부여하는지 확인합니다. ListObjectSv2 권한이 제대로 부여되었다면, 사용자의 동기화 명령 구문을 확인하세요. sync 명령을 실행할 때 --request-payer 요청자 옵션을 포함하지 않으면 액세스 거부 오류가 발생합니다.

예를 들어 다음 sync 명령을 실행하되 requester-pays-bucket을 버킷 이름으로 바꿉니다.

aws s3 sync ./ s3://requester-pays-bucket/ --request-payer requester

관련 정보

버킷 소유자가 계정 간 버킷 권한 부여

Amazon S3에 대한 ID 기반 정책

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