F.Ko-Jiの「一秒後は未来」

AWS SDK for PHPでS3にputObjectする際に[curl] 55: select/poll returned errorというエラーが出る場合

AWS SDK for PHP を使って S3 にファイルをアップロードしようとしたら以下のようなエラーが。

PHP Fatal error:  Uncaught exception 'Guzzle\Http\Exception\CurlException'
 with message '[curl] 55: select/poll returned error [url] https://s3.amazonaws.com/...

きちんと IAM で作成したユーザーのアクセスキーを使っているし、開発環境では正しく動作している。この curl のエラーはファイル自体転送できてない模様・・・。

数十分くらい悩んで、もう一度ひとつずつ調べていってみると、ユーザーに「Amazon S3 Read Only Access」のポリシーしか適用されていなかったのが原因だった…。そういえばこのユーザーは過去に Read Only だけでいいかなと思ってそうしていたのだった。

aws-sdk-php-s3-curl-error.jpg

というわけで「Amazon S3 Full Access」の権限を与えて解決。

読み込みのアクセスすら与えられていなかったら 403 のエラーが出てくるので分かりやすいけど、Read Only だけ与えられているユーザーで putObject しようとしたらこういうエラーになるのでちょっと分かりにくかった。

(追記) もう1つ、「Amazon S3 Full Access」の権限を与えていても、 \Aws\Common\Aws::factory() の引数配列にバケット作成時と異なる region を与えてしまっていた場合にも同じエラーが出てた。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

著者について

fkoji

F.Ko-Ji

Webエンジニアやってます。最近は ドットインストール の開発がお仕事です。その傍ら、個人で Meity電車遅延なう梅酒.in#グラドル自画撮り部 の部室といったネットサービスを開発・運営してます。梅酒と草野球とリアル脱出ゲームが好きです。

» 詳しいプロフィールや運営サービスの一覧など