我尝试访问其他 AWS 区域中的 Amazon Simple Storage Service (Amazon S3) 存储桶,但收到了“IllegalLocationConstraintException”错误。
简短描述
您无法从与 Amazon S3 存储桶所在区域不同的区域访问该存储桶。要访问 S3 存储桶,您必须更新您的 API 或 AWS SDK,使其与存储桶位于同一区域。有关 IllegalLocationConstraintException 错误的详细信息,请参阅 List of error codes。
解决方法
使用以下故障排除步骤获取存储桶所在的区域,然后更新您的 Amazon S3 端点,使其位于正确的区域。
**注意:**如果您在运行 AWS 命令行界面 (AWS CLI) 命令时收到错误,请参阅 AWS CLI 错误故障排除。此外,请确保您使用的是最新版本的 AWS CLI。
确认 Amazon S3 存储桶区域
要确认 S3 存储桶区域,您可以使用 Amazon S3 控制台或 AWS CLI。
Amazon S3 控制台
完成以下步骤:
- 打开 Amazon S3 控制台,然后导航到您的 S3 存储桶。
- 选择 Properties(属性)选项卡。
- 在 Bucket overview(存储桶概述)中,记下您的存储桶的 AWS Region(AWS 区域)。
AWS CLI
运行以下 get-bucket-location 命令:
aws s3api get-bucket-location --bucket BUCKET_NAME
**注意:**请将 BUCKET_NAME 替换为您的 S3 存储桶名称。
输出示例:
{
"LocationConstraint": "us-west-2"
}
**注意:**如果 LocationConstraint 请求参数为空,则存储桶位于 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,请更新您的配置以指定正确的区域。
适用于 Python 的 AWS SDK (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 替换为您的存储桶名称。IllegalLocationConstraintException