我直接與 AWS API 互動,而不是通過特定語言的庫。
我正在嘗試在存盤桶上呼叫ListObjectsV2并回傳錯誤訊息:
<?xml version="1.0" encoding="UTF-8"?>
<Error>
<Code>AuthorizationHeaderMalformed</Code>
<Message>The authorization header is malformed; the region \'us-east-1\' is wrong; expecting \'eu-west-2\'</Message>
<Region>eu-west-2</Region>
<RequestId>3W75CR8BNRQJ13Y6</RequestId>
<HostId>kYvjGFpckmTBxcq89h3Y dWmt7UrHJWXlOQyr0k9V2/07NJVDK4dwg2rqAayjOwV1P4Z5bFnvys=</HostId>
</Error>
這似乎很合乎邏輯,我知道我現在嘗試與之互動的存盤桶是eu-west-2.
我的問題是,如果我不知道存盤桶的區域,我如何通過 API 找到?sigv4要求你指定區域,但是如果你不知道,怎么構造一個請求找出來呢?
這適用于私有存盤桶。我找到了公共存盤桶的答案,但它們不適用于未經身份驗證的私有存盤桶。身份驗證要求您知道該區域(AFAIK)。
uj5u.com熱心網友回復:
有三個選項。
對于前兩個,您可以從 ListObjectsV2 呼叫失敗中獲取存盤桶區域:
x-amz-bucket-region: us-west-2
x-amz-request-id: [...]
x-amz-id-2: [...]
Content-Type: application/xml
Transfer-Encoding: chunked
Date: Mon, 31 Oct 2022 14:42:37 GMT
Server: AmazonS3
Connection: close
<?xml version="1.0" encoding="UTF-8"?>
<Error>
<Code>AuthorizationHeaderMalformed</Code>
<Message>The authorization header is malformed; the region 'us-east-1' is wrong; expecting 'us-west-2'</Message>
<Region>us-west-2</Region>
<RequestId>...</RequestId>
<HostId>...</HostId>
</Error>
您可以從回應中的HTTP 標頭或節點x-amz-bucket-region中的 XML 回應中提取存盤桶位置。Error.Region
或者,您可以撥打HeadBucket電話:
x-amz-id-2: ...
x-amz-request-id: ...
x-amz-bucket-region: us-west-2
x-amz-access-point-alias: false
Date: Fri, 10 2012 21:34:56 GMT
Server: AmazonS3
這包括相同的x-amz-bucket-region標題。
這是BotoCore在訪問 S3 API 時使用的相同順序的三種方式。
uj5u.com熱心網友回復:
存盤桶資訊在其編輯頁面上,您可以在其中獲取位置資訊。而且我的腳本有問題,正是因為 aws-cli 沒有放置語言環境。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/524134.html
上一篇:ValueError:multilabel-indicatorformatisnotsupported,由于錯誤無法制作ROC曲線
