2017-05-25 70 views
1

我想通過調用亞馬遜web服務來獲取我的桶的位置。 我使用以下網址: -使用webservice獲取亞馬遜桶的區域

https://mybucketname.amazonaws.com/location? 
X-Amz-Expires=86400& 
X-Amz-Algorithm=AWS4-HMAC-SHA256& 
X-Amz-Credential=<Access Key>%2F20170524%2Fus-east-1%2Fs3%2Faws4_request& 
X-Amz-Date=20170524T162340Z&X-Amz-SignedHeaders=host& 
X-Amz-Signature=f800dce1258a3d43d19929a37c98f3dedf5e5164e807ccf70ef396be5a1e7cf0 

不幸的是,回來了一個錯誤: -

Error parsing the X-Amz-Credential parameter; the region 'us-east-1' is wrong; expecting 'eu-west-2'

這可能是因爲我在請求X-Amz-Credential部分使用us-east-1。要求將區域添加到X-Amz-Credential。 問題是我不知道我應該使用哪個區域,因爲這是我試圖找出的東西。

有沒有更好的方法來獲得該地區?

+0

我相信*'https://s3.amazonaws.com/bucket-name?location'如果用'us-east-1'憑證簽名,將會按預期工作,而不管桶的位置如何。試試嗎? –

+0

是的,這是曾經的情況,不幸的是,如果你現在這樣做,你只是得到一個'PermanentRedirect'消息 – Shazoo

+0

驗證,它仍然是這樣。我剛剛重新測試過它。用'X-Amz-Credential = ... us-east-1'簽署請求我知道的桶位置在'us-east-2',我得到正確的響應:'我們 - 東 - 2'。但是你*有*使用路徑樣式的URL:https:// s3.amazonaws.com/bucket-name-goes-here。如果你使用'https:// bucket-name.s3.amazonaws.com',那麼這將不起作用,並且可能從來沒有使用過Sig V4的區域不匹配。我已經標記爲重複。 –

回答

2

以下AWS Command-Line Interface (CLI)命令給出信息。鑑於您編寫的網址,似乎您正在編寫自己的代碼以查詢AWS。任何不使用AWS SDK的理由?

$ aws s3api get-bucket-location --bucket my-bucket 

{ 
    "LocationConstraint": "us-west-2" 
} 
+0

該代碼正在SQL服務器組件中使用。所以據我瞭解,AWS SDK不能從那裏引用。我對此很新,所以我不知道它的全部內容 – Shazoo