다른 AWS 리전에 있는 Amazon Simple Storage Service(Amazon S3) 버킷에 액세스하려고 했는데 “IllegalLocationConstraintException” 오류가 발생했습니다.
간략한 설명
버킷의 리전과 다른 리전에서는 Amazon S3 버킷에 액세스할 수 없습니다. S3 버킷에 액세스하려면 API 또는 AWS SDK를 버킷과 동일한 리전으로 업데이트해야 합니다. IllegalLocationConstraintException 오류에 대한 자세한 내용은 오류 코드 목록을 참조하십시오.
해결 방법
다음 문제 해결 단계를 사용하여 버킷의 리전을 가져오고 Amazon S3 엔드포인트를 올바른 리전으로 업데이트하십시오.
참고: AWS Command Line Interface(AWS CLI) 명령을 실행할 때 오류가 발생하면 AWS CLI의 오류 해결을 참조하십시오. 또한 최신 AWS CLI 버전을 사용하고 있는지 확인하십시오.
Amazon S3 버킷 리전 확인
Amazon S3 콘솔 또는 AWS CLI를 사용하여 S3 버킷 리전을 확인할 수 있습니다.
Amazon S3 콘솔
다음 단계를 완료합니다.
- Amazon S3 콘솔을 연 다음 S3 버킷으로 이동합니다.
- 속성 탭을 선택합니다.
- 버킷 개요에서 버킷의 AWS 리전을 기록해 둡니다.
AWS CLI
다음 get-bucket-location 명령을 실행합니다.
aws s3api get-bucket-location --bucket BUCKET_NAME
참고: BUCKET_NAME을 S3 버킷 이름으로 바꾸십시오.
출력 예시:
{
"LocationConstraint": "us-west-2"
}
참고: LocationConstraint 요청 파라미터가 null이거나 비어 있는 경우 버킷은 us-east-1 리전에 있습니다.
API 또는 AWS SDK 리전 구성 업데이트
다음 단계를 완료하여 API 또는 AWS SDK 구성을 올바른 리전으로 업데이트합니다.
AWS CLI
다음 ls 명령을 실행하고 --region 파라미터를 추가합니다.
aws s3 ls s3://BUCKET_NAME --region YOUR_REGION
참고: BUCKET_NAME을 S3 버킷 이름으로, YOUR_REGION을 사용자의 리전으로 바꾸십시오.
AWS SDK
AWS SDK를 사용하는 경우 구성을 업데이트하여 올바른 리전을 지정하십시오.
AWS SDK for Python(Boto3) 구성 예시
import boto3
s3 = boto3.client('s3', region_name='YOUR-REGION')
response = s3.list_objects_v2(Bucket='BUCKET_NAME')
print(response)
참고: YOUR_REGION을 사용자의 리전으로, BUCKET_NAME을 name.IllegalLocationConstraintException 버킷으로 바꾸십시오.