Introduction

備忘録。

掲題の通りで、それを知らず、ずっと curl とかでアップロードができない、というエラーに悩まされていた。
エラーの場合、下記のようなエラーが帰ってくる。

1
2
3
4
5
6
7
8
9
10
11
12
13
<?xml version="1.0" encoding="UTF-8"?>
<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>{AWSAccessKeyId}</AWSAccessKeyId>
<StringToSign>{StringToSign}</StringToSign>
<SignatureProvided>{SignatureProvided}</SignatureProvided>
<StringToSignBytes>{StringToSignBytes}</StringToSignBytes>
<CanonicalRequest>{CanonicalRequest}</CanonicalRequest>
<CanonicalRequestBytes>{CanonicalRequestBytes}</CanonicalRequestBytes>
<RequestId>{RequestId}</RequestId>
<HostId>{HostId}</HostId>
</Error>

Why?

AWS CLI の S3 コマンドのサブコマンド presign についての 公式ドキュメント に書いてある。

Generate a pre-signed URL for an Amazon S3 object. This allows anyone who receives the pre-signed URL to retrieve the S3 object with an HTTP GET request. For sigv4 requests the region needs to be configured explicitly.

一言も PUT が可能だとは書いていない…