Symfony4でAmazon S3に画像をアップロードするコマンドを作る方法

Symfony4でAmazon S3に画像をアップロードするコマンドを作る方法です。

AWS CLIでアップロードできるのですが、今回はSymfonyのコマンドからのアップロード機能を実装してみました。

AWSのIAMでユーザーを作成してポリシー設定

AWSのIAMでユーザーを作成してアクセスキーとシークレットアクセスキーを取得して下さい。

その後、プログラムから画像をアップロードできるよう以下のようにポリシーを設定してユーザーにアタッチして下さい。

以下はインラインポリシーの追加からJSONで設定して下さい。

バケット名の部分はS3で登録したバケット名に変更して下さい。

S3でバケットを作成

S3でバケットを作成して下さい。

プログラムから画像をアップロードできるようにするためブロックパブリックアクセスは無効にして下さい。

作成したバケット名は上記のポリシーに設定して下さい。

各種パッケージのインストール

S3Clientをサービスに登録

config/services.yamlにS3Clientを登録して下さい。

Gaufretteの設定

以下のようにconfig/packages/knp_gaufrette.yamlを作成して下さい。

S3へ画像をアップロードするサービスクラスを作成

以下のようにsrc/Service/S3Uploader.phpを作成して下さい。

画像アップロードクラスをサービスに登録

すでに上記でservices.yamlに画像アップロードクラスを登録していますが、登録方法は以下のようになります。

S3へ画像をアップロードするコマンドを作成

以下のようにsrc/Command/UploadCommandを作成して下さい。

S3の画像を削除するコマンドを作成

以下のようにsrc/Command/DeleteCommandを作成して下さい。

以上で完成です。

これでS3にファイルをアップロードしたり削除したりできるコマンドが追加されます。

S3にアップロードするコマンドは以下のとおりです。

S3のファイルを削除するコマンドは以下のとおりです。

 

コメントを残す

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください