跳至內容

如何解決不同區域 Amazon S3 儲存貯體的「IllegalLocationConstraintException」錯誤?

1 分的閱讀內容
0

我嘗試存取不同 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 主控台

請完成下列步驟:

  1. 開啟 Amazon S3 console (Amazon S3 主控台),然後瀏覽至您的 S3 儲存貯體。
  2. 選擇 Properties (屬性) 索引標籤。
  3. 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

AWS 官方已更新 1 年前