我嘗試存取不同 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 儲存貯體區域
若要確認 S3 儲存貯體區域,您可以使用 Amazon S3 主控台或 AWS CLI。
Amazon S3 主控台
請完成下列步驟:
- 開啟 Amazon S3 console (Amazon S3 主控台),然後瀏覽至您的 S3 儲存貯體。
- 選擇 Properties (屬性) 索引標籤。
- 在 Bucket overview (儲存貯體概觀) 中,記下儲存貯體的 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 替換為您的儲存貯體名稱。IllegalLocationConstraintException