0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

S3で署名Verを4にしたらエラー

Last updated at Posted at 2019-12-15

AWS SDK for PHP v2を使ってるもんで、署名Verを2から4にする必要があった
そしたらファイルのアップロードで以下の様なエラーが出てアップロードできない

The request signature we calculated does not match the signature you provided. Check your key and signing method.

修正自体はfactoryするときに'signature' => 'v4'を渡すくらいで大した作業でもなく。
キーが間違ってるから確認して的なエラーメッセージだけど、ファイル一覧は正常に動くしそもそも今まで動いてたのでACCESS_KEYとSECRET_KEYが間違ってる訳でもなさそう。

ファイルアップのソースはこんな感じ

    // S3バケット名
    $backet = 'backet_name';
    // アップするS3のパス
    $s3dir = '/hoge/fuga';
    // アップ時のファイル名
    $file = 'aaa.txt';

    // アップするローカル側のファイルフルパス
    $upfilepath = ’/tmp/tmp.txt';

    $s3->upload(
        $backet.'/'.$s3dir,
        $file,
        fopen($upfilepath, 'rb'),
        'public-read'
    );

uploadメソッドの第一引数は本来バケット名を渡すはずがバケット名 + ファイルパスになってる・・・
正しい引数に修正することでエラーは出なくなった

    $s3->upload(
        $backet,
        $s3dir.'/'.$file,
        fopen($upfilepath, 'rb'),
        'public-read'
    );

署名Ver2は第一引数と第二引数はただのファイルパスの情報だったので、バケット名とファイルパスをどこで区切って渡してもアップロードできた。多分
署名Ver4はこれらの引数を元にハッシュ値を作成するので、バケットとファイルパスをちゃんと渡さないとハッシュ値が変わっちゃってアップロードに失敗する。多分

解決したものの、署名Ver2が使えなくなるのは延期になったし、以前に作ったバケットはずっとVer2使えるみたいな話もあるので対応する必要なかったかも?

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?