EC2のLaravelでAmazon S3にファイル送受信・削除する手順・プログラム

こんにちは!
エンジニアの岩間です。

今回は、EC2にインストールしたLaravelでAmazon S3にファイル送受信・削除する手順をご紹介します。

 

この記事でご紹介すること

  • EC2とS3の接続する方法
  • LaravelからファイルをS3に保存する方法
  • LaravelでS3からファイルダウンロードする方法
  • LaravelでS3からファイル削除する方法

をご紹介していきます。

環境情報

以下環境情報です。

OS Almalinux9 (AWS EC2 Marketplaceにて選択、Tokyoリージョン)
Laravel 9.4
PHP 8.1
Composer 2.5.1

EC2とS3を接続する

まずはLaravelをインストールしたEC2とS3を接続します。

方法としては、S3にアクセスできるIAMポリシーを割り当てたIAMロールを作成し、そのIAMロールを対象のEC2に割り当てます。

VPCのエンドポイント経由での通信となるため、外にでることなくセキュアな通信ができます。

早速設定していきましょう。

 

①S3バケットを作成する

最初にS3バケットを作成します。

AWSコンソール画面からS3を検索、「バケットを作成する」ボタンをクリックします。

 

以下のように設定します。

バケット名 任意のバケット名を設定
リージョン EC2のリージョンに合わせる
オブジェクト所有者 ACL無効(推奨)
パブリックアクセス すべてブロック
バケットのバージョニング 任意
デフォルトの暗号化 任意

入力できたら、「バケットを作成」ボタンをクリックしてバケットを作成します。

これでS3バケットの作成完了です。

 

②IAMロールを設定する

次にEC2にアタッチするためのIAMロールを設定します。

AWSコンソール画面からIAMを検索、画面左のメニュー内の「ロール」をクリックします。

「ロールを作成」ボタンをクリックします。

以下の画像のように設定し、「次へ」をクリックします。

 

許可の追加の画面に遷移したら、「ポリシーを作成」をクリックしてIAMポリシーを新規作成します

以下の画像のようにJSONを記述します。

「次のステップ:タグ」→「確認」でIAMポリシーを作成します。

 

以下は、JSONでの設定内容詳細です。

 

IAMポリシーを作成したら、先ほどのIAMロールの許可を追加画面で作成したIAMポリシーをチェックし、「次へ」をクリックします。

確認画面でIAMロール名を入力し、「ロールを作成」をクリックします。

これでIAMロールの作成が完了です。

 

③EC2インスタンスにIAMロールをアタッチする

次は、上記で作成したIAMロールをEC2インスタンスにアタッチしていきます。

AWSコンソール画面からEC2を検索、左メニューの「インスタンス」をクリックします。

対象のインスタンスにチェックをいれ、右上の「アクション」→「セキュリティ」→「IAMロールを変更」をクリックします。

 

以下の画像のような画面に遷移するので、先ほど作成したIAMロールを選択し、「IAMロールの更新」ボタンをクリックします。

 

これでEC2にIAMロールを設定することができました。

 

④Laravelの設定

次は、Laravel側の設定を行っていきます。

1.composerでflysystem-aws-s3-v3をインストールする

Laravelプロジェクトフォルダで以下のコマンドを実行します。

(--with-all-dependenciesで依存関係にあるパッケージのみupgradeする)

これでS3接続に必要なパッケージがインストールできました。

 

2..envファイルに設定を追記する

Laravelの.envファイルを開き、以下の設定を追記します。

 

以上で、Laravel⇔S3の接続設定は完了です。

 

Laravelプログラム

ここまででLaravel⇔S3の接続に必要な設定ができました!

次は実際のファイル操作に必要なプログラムを書いていきます。

ファイルアップロード

アップロードされたファイルをLaravelでS3に保存するサンプルプログラムです。

ファイルアップロードフォームから「アップロード」ボタンをクリックすると、アップロードしたファイルをS3に送信、保存できるようにします。

まずはファイルアップロードフォームをHTMLでつくります。

HTML

 

「アップロード」ボタンがクリックされると、S3Controllerクラスのupload関数内の処理が走るようにします。

ルーティング

 

コントローラー

※アップロード先S3フォルダ名に「test」を指定しています。S3バケットの「フォルダの作成」から作成できます。

 

ファイルダウンロード

ファイルダウンロードはS3ファイルパスを使用してダウンロードします。

LaravelでS3からファイルダウンロードするサンプルプログラムです。

 

コントローラー

 

ファイル削除

ファイル削除もファイルダウンロードと同様にS3ファイルパスを使用してダウンロードします。

LaravelでS3に保存したファイルを削除するサンプルプログラムです。

 

コントローラー

 

まとめ

お疲れさまでした!

以上、EC2のLaravelでAmazon S3にファイル送受信・削除する手順・プログラムのご紹介でした。

ここまでお読みいただきありがとうございました。

この記事が気に入ったら
いいね ! しよう

Twitter で

【採用情報】一緒に働く仲間を募集しています

採用情報
ページトップへ