0
0

はじめに

こんにちは、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を活用することで、柔軟でスケーラブルなファイルストレージソリューションを簡単に導入することができます。

参考

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