質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

Laravel 5

Laravel 5は、PHPフレームワークLaravelの最新バージョンで、2014年11月に発表予定です。ディレクトリ構造がが現行版より大幅に変更されるほか、メソッドインジェクションやFormRequestの利用が可能になります。

Q&A

解決済

2回答

2947閲覧

S3を使用したLaravelの実装方法を教えてほしい

poteto4401

総合スコア57

Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

Laravel 5

Laravel 5は、PHPフレームワークLaravelの最新バージョンで、2014年11月に発表予定です。ディレクトリ構造がが現行版より大幅に変更されるほか、メソッドインジェクションやFormRequestの利用が可能になります。

0グッド

1クリップ

投稿2019/02/12 07:48

Webサービスを公開するにあたり、AWSのEC2、RDS、S3を使用する予定です。

サービス内で利用する画像ファイルは全てS3に配置し、アプリケーション起動時に読み込んでキャッシュし、
画像またはパスが変更されたときのみ再度該当のファイルをキャッシュするといった実装を行いたいです。

データベースには画像の相対ファイルパスが記録されている状態であった場合、以下のような実装で問題ないでしょうか?
またアプリケーション起動時にサーバー内のstrageに画像のキャッシュ、ユーザーのブラウザにもキャッシュがそれぞれ作成される認識で合っていますでしょうか?

認識が間違っている場合、一般的な実装方法や設定方法をご教授いただきたいです。

DB

1------------------------- 2id | item_name | img_url 3------------------------- 41 | apple | img/apple.png 5-------------------------

php

1<img src="{{ s3_url . item->img_url }}" alt="画像の表示">

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

↑はLaravelの話ではないですね。

LaravelならStorageを使ってS3に直接読み書きすればいい。
.envで本番環境のみFILESYSTEM_DRIVER=s3として

Storage::put($item->img_url, $content);
<img src="{{ Storage::url($item->img_url) }}" alt="画像の表示">

もちろんS3のkeyやurlなどの設定も必要。
config/filesystems.php

サーバーローカルので保存は不要。

https://readouble.com/laravel/5.7/ja/filesystem.html

投稿2019/02/13 03:32

kawax

総合スコア10377

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

poteto4401

2019/02/13 04:36

ありがとうございます!
guest

0

S3に配置した画像ファイルのキャッシュが目的でしたら、アプリ側での実装よりも、CloudFront + S3での実装が良いと思います。

画像ファイルを更新したタイミングで、対象の画像ファイルのみCloudFrontのキャッシュをクリアするロジックをアプリに実装することで簡単に実現可能です。

投稿2019/02/13 02:37

moonphase

総合スコア6621

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

poteto4401

2019/02/13 02:51

解答ありがとうございます。 まだ規模が小さく利用ユーザーもそこまで多くないと想定されるのですが、それでもCloudFrontを使用するべきでしょうか?料金が気になります。 そもそも、s3を使うこと自体過剰なのでしょうか。コンテンツの画像ファイルを置くだけなのですが、アプリ側で持っておくぐらいでいいのか、s3を使用すべきかの判断ができかねております
moonphase

2019/02/13 03:19

ユーザーが少なくパフォーマンスに問題がなければキャッシュをそもそも実装しなくてもいいのではないでしょうか。 今後ユーザーが増えパフォーマンスへの影響が考えられる場合はCF+S3にしておいたほうが今後の構成変更も考えると楽かと思います。 S3の料金を除き、毎日10Gの画像を一ヶ月配信した(計300G)場合のコスト比較 CloudFrontからインターネット $34.200(別途無料利用枠50GB、200 万件の HTTP および HTTPS リクエストあり。無料利用枠を適用すると$28.500) EC2からインターネット $34.200(最初の1GBが無料、この無料分を適用すると$34.086) 尚、CFがS3からデータを取得する場合は0.060/gbの料金。100G使っても$6程度。 大抵のケースではCF+S3のほうが若干安くなるでしょう。
poteto4401

2019/02/13 04:35

ご丁寧にありがとうございます。 パフォーマンスに影響が出始めた場合、CloudFrontの導入を検討しようと思います!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問