AWS S3. Загрузка объекта, выдающего ошибку SignatureDoesNotMatch для Powershell, но работающей с curl / Postman / AWSPowershellTools - PullRequest
0 голосов
/ 07 апреля 2020

Я хочу загрузить файл с AWS S3, для которого я использую следующую команду curl:

curl --progress-bar "https://garvit-todolist-test.s3-us-west-1.amazonaws.com/todolist.war" \
-H "Host: garvit-todolist-test.s3.amazonaws.com" \
-H "Date: Mon, 6 Apr 2020 14:51:07 GMT" \
-H "Authorization: AWS <ACCESS_KEY>:<SIGNATURE>" -o "$HOME//todolist.war"

Это прекрасно работает. Я попробовал аналогичный запрос с Почтальоном, и он также работает.

Но когда я пытаюсь запустить его с Powershell на Windows машине:

$Headers = @{
  Host = "garvit-todolist-test.s3.amazonaws.com"
  Date = "Mon, 6 Apr 2020 14:51:07 GMT"
  Authorization = "AWS <ACCESS_KEY>:<SIGNATURE>"
}
Invoke-WebRequest -Uri "https://garvit-todolist-test.s3-us-west-1.amazonaws.com/todolist.war" -Headers $Headers

, я получаю следующую ошибку:

<Error>
<Code>SignatureDoesNotMatch</Code>
<Message>
  The request signature we calculated does not match the signature you provided. Check your key and signing method.
</Message>
<AWSAccessKeyId>AK...VY</AWSAccessKeyId>
<StringToSign>GET


Tue, 07 Apr 2020 09:01:36 GMT
/garvit-todolist-test/todolist.war</StringToSign>
<SignatureProvided>xsAjKLznClTWWuKmdRGcRQ6Epdk=</SignatureProvided>
<StringToSignBytes>47 45 ... 61 72</StringToSignBytes>
<RequestId>D0C9862A95A49CFB</RequestId>
<HostId>
  gJvsIcfdDaF944rIx648mCMF1xQcZBfBAd/Rvdm8fRh4khELmLeEgY+O9NpgLgMl6xCc2vJsHcY=
</HostId>
</Error>

Эта команда раньше работала неделю go, но теперь она начала давать сбой. Строка для подписи также совпадает с той, которую мы используем для генерации подписи.

Просто добавлю, что я также успешно загрузил объект с помощью командлета Read-S3Object, предоставленного как часть AWS Powershell Tools для того же Windows машина.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...