前提・実現したいこと
Cloud9上のLaravelでAWSのS3にファイルをアップロードしたいです。
LaravelでS3にファイルをアップロードしようとすると、
アップロード先のホストを解決できない旨のエラーメッセージが表示されます。
環境設定もひと通り見直したのですが、解決できません。
他に確認すべき項目はないでしょうか。
よろしくお願いします。
発生している問題・エラーメッセージ
よく見るとURLに指定したフォルダ、ファイル名は記述されているものの、AWSやS3バケットの記述が見当たりません。
フォルダを指定しないとhttps://の後にファイル名が続きます。
Aws \ S3 \ Exception \ S3Exception Error executing "PutObject" on "https://upload/n6Vm8CFwTk00DHs5Iq8dR2ON3BjyDt9M742zKZmS.jpeg"; AWS HTTP error: cURL error 6: Could not resolve host: upload (see http://curl.haxx.se/libcurl/c/libcurl-errors.html)
POSTデータの中身
エラー画面キャプチャ
該当のソースコード
アップロード処理
$this->validate($request, ['image' => 'required|image']); $image = $request->file('image'); $path = Storage::disk('s3')->put('upload', $image, 'public');
Composer.json インストールしたパッケージ
"require": { "php": "^7.1.3", "aws/aws-sdk-php": "^3.91", "fideloper/proxy": "^4.0", "laravel/framework": "5.8.*", "laravel/tinker": "^1.0", "laravelcollective/html": "^5.6.0", "league/flysystem-aws-s3-v3": "^1.0" },
filesystems.phpで関係ありそうな箇所
'cloud' => env('FILESYSTEM_CLOUD', 's3'), 'disks' => [ 'local' => [ 'driver' => 'local', 'root' => storage_path('app'), ], 'public' => [ 'driver' => 'local', 'root' => storage_path('app/public'), 'url' => env('APP_URL').'/storage', 'visibility' => 'public', ], 's3' => [ 'driver' => 's3', 'key' => env('AWS_ACCESS_KEY_ID'), 'secret' => env('AWS_SECRET_ACCESS_KEY'), 'region' => env('AWS_DEFAULT_REGION'), 'bucket' => env('AWS_BUCKET'), 'url' => env('AWS_URL'), ], ],
IAMユーザに設定したインラインポリシー
{ "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": "s3:*Object", "Resource": "*" } ] }
試したこと
- S3のACL設定を変更した。
新規のパブリック ACL と、パブリックオブジェクトのアップロードをブロックする (推奨)
Falseに変更
パブリック ACL を通じて付与されたパブリックアクセスを削除する (推奨)
Falseに変更
- IAMユーザの設定を見直し
- インスタンス再起動
- 環境設定を一通り見直し
補足情報(FW/ツールのバージョンなど)
Laravel 5.8.10
filesystems.phpでS3のURLを環境変数から参照する記述もあるようで、
ここに適切なURLを設定すればいいのでしょうか。
試しにs3-ap-northeast-1.amazonaws.com/[bucket名]/
を記述してみましたが、
同様のエラーが発生しました。
参考にした記事
LaravelでS3へファイルをアップロード・参照する

回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/04/09 08:06 編集