別の AWS リージョンにある Amazon Simple Storage Service (Amazon S3) バケットにアクセスしようとしたところ、「IllegalLocationConstraintException」エラーが発生しました。
簡単な説明
バケットのリージョンとは異なるリージョンからは、Amazon S3 バケットにアクセスできません。S3 バケットにアクセスするには、API または AWS SDK を更新し、バケットと同じリージョンに配置する必要があります。IllegalLocationConstraintException エラーの詳細については、「エラーコードのリスト」を参照してください。
解決策
次のトラブルシューティング手順を実施してバケットのリージョンを取得し、Amazon S3 エンドポイントを更新して正しいリージョンに配置します。
注: AWS コマンドラインインターフェイス (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 をバケット名に置き換えます。