はじめに
こんにちは、Webエンジニアの岩田史門(@SI_Monxy)です!
今回はLaravelでのAWS S3の利用について記事を書いてみました!
改善点や修正点があれば、コメントにて優しくご指導いただけると嬉しいです!
概要
AWS S3(Amazon Simple Storage Service)は、高い可用性とスケーラビリティを持つクラウドストレージサービスです。Laravelは、その柔軟なストレージシステムを介して、簡単にS3を利用することができます。本記事では、LaravelアプリケーションからAWS S3ストレージを利用する方法について詳しく解説します。
前提条件
- Laravelプロジェクトがセットアップされていること
- AWSアカウントがあること
- AWS CLIがインストールされていること
AWS S3バケットの作成
まず、AWSマネジメントコンソールにログインし、S3バケットを作成します。
1. S3コンソールにアクセス
AWSマネジメントコンソールから「S3」を選択します。
2. バケットの作成
「バケットを作成」ボタンをクリックし、バケット名とリージョンを設定します。必要に応じて他の設定も行います。
3. バケットの作成完了
設定を確認し、「バケットを作成」ボタンをクリックします。
Laravelプロジェクトの設定
次に、Laravelプロジェクトに必要なパッケージをインストールし、設定を行います。
1. パッケージのインストール
以下のコマンドを実行し、AWS SDK for PHPをインストールします。
composer require aws/aws-sdk-php
2. 環境変数の設定
.envファイルに以下の設定を追加します。
AWS_ACCESS_KEY_ID=your-access-key-id
AWS_SECRET_ACCESS_KEY=your-secret-access-key
AWS_DEFAULT_REGION=your-region
AWS_BUCKET=your-bucket-name
AWS S3ストレージドライバの設定
Laravelの設定ファイルを編集し、S3ストレージドライバを有効にします。
1. config/filesystems.phpの編集
config/filesystems.phpファイルを開き、以下のように設定します。
'disks' => [
'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'),
'endpoint' => env('AWS_ENDPOINT'),
],
],
ファイルのアップロードとダウンロード
S3ストレージを利用してファイルをアップロードおよびダウンロードする方法を説明します。
1. ファイルのアップロード
コントローラ内で、以下のようにファイルをS3にアップロードします。
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Storage;
class FileController extends Controller
{
public function upload(Request $request)
{
if ($request->hasFile('file')) {
$path = $request->file('file')->store('uploads', 's3');
return response()->json(['path' => $path], 200);
}
return response()->json(['message' => 'File not uploaded'], 400);
}
}
2. ファイルのダウンロード
コントローラ内で、以下のようにファイルをS3からダウンロードします。
class FileController extends Controller
{
public function download($filename)
{
$file = Storage::disk('s3')->get("uploads/{$filename}");
return response($file, 200)
->header('Content-Type', 'application/octet-stream')
->header('Content-Disposition', "attachment; filename={$filename}");
}
}
まとめ
本記事では、LaravelアプリケーションからAWS S3ストレージを利用する方法について解説しました。S3バケットの作成から、Laravelの設定、ファイルのアップロードとダウンロードまでの一連の流れを理解していただけたかと思います。AWS S3を活用することで、柔軟でスケーラブルなファイルストレージソリューションを簡単に導入することができます。