如何解决访问其他区域中的 Amazon S3 存储桶时出现的“IllegalLocationConstraintException”错误?

1 分钟阅读
0

我尝试访问其他 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 控制台

完成以下步骤:

  1. 打开 Amazon S3 控制台,然后导航到您的 S3 存储桶。
  2. 选择 Properties(属性)选项卡。
  3. 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

AWS 官方
AWS 官方已更新 2 个月前