S3のパブリックバケットにローカルから画像をアップロードする
今回はローカルPCとしてはmacを使用して画像をS3のパブリックバケット上にアップロードする作業を実施します。
事前作業
①IAMユーザ準備
S3FullAccess権限のついたIAMユーザを作成し、ローカルPCにセッティングします。
$ cat /Users/<user>/.aws/credentials
defaultに作成したIAMユーザのアクセスキー、シークレットアクセスキーが設定されていたらOKです。
アカウントに影響のないCLIコマンド等を打って対象アカウントに誤りがないか確認します。
$ aws s3 ls
②composerインストール
macの場合は、brewが入っている前提ですが、brewコマンドでcomposerをインストールします。
$ brew install composer
作業手順
1. 作業用ディレクトリ作成および移動
$ mkdir aws_sdk_sample && cd aws_sdk_sample
2. AWS SDK for PHPをインストール
composerを使って、AWS SDK for PHPをインストールします。
$ composer require aws/aws-sdk-php
作業用ディレクトリに以下のファイルが作成されます。
$ ls -la total 56 drwxr-xr-x 5 t-yyyy XXXX\Domain Users 160 5 15 00:42 . drwxr-xr-x+ 59 t-yyyy XXXX\Domain Users 1888 5 15 00:41 .. -rw-r--r-- 1 t-yyyy XXXX\Domain Users 63 5 15 00:42 composer.json -rw-r--r-- 1 t-yyyy XXXX\Domain Users 22486 5 15 00:42 composer.lock drwxr-xr-x 11 t-yyyy XXXX\Domain Users 352 5 15 00:42 vendor $ cd vendor/ $ ls -la total 8 drwxr-xr-x 11 t-yyyy XXXX\Domain Users 352 5 15 00:42 . drwxr-xr-x 5 t-yyyy XXXX\Domain Users 160 5 15 00:42 .. -rw-r--r-- 1 t-yyyy XXXX\Domain Users 178 5 15 00:42 autoload.php drwxr-xr-x 3 t-yyyy XXXX\Domain Users 96 5 15 00:42 aws drwxr-xr-x 3 t-yyyy XXXX\Domain Users 96 5 15 00:42 bin drwxr-xr-x 11 t-yyyy XXXX\Domain Users 352 5 15 00:42 composer drwxr-xr-x 5 t-yyyy XXXX\Domain Users 160 5 15 00:42 guzzlehttp drwxr-xr-x 3 t-yyyy XXXX\Domain Users 96 5 15 00:42 mtdowling drwxr-xr-x 3 t-yyyy XXXX\Domain Users 96 5 15 00:42 psr drwxr-xr-x 3 t-yyyy XXXX\Domain Users 96 5 15 00:42 ralouphie drwxr-xr-x 5 t-yyyy XXXX\Domain Users 160 5 15 00:42 symfony
3. S3バケット作成
以下の通りS3バケットを作成します。
名前は今回は「s3-public-test-bucket」にします。
画像下部に表示されている「バケットを作成」ボタンを押下
バケット作成時、パブリックアクセスを許可していない場合は以下の画面でチェックを外し許可すること
4. index.phpスクリプト作成
作業用ディレクトリの配下に以下のような「index.php」ファイルを作成します。
S3のバケット名を作成したものに設定し、アップロードするファイルを「test.png」とします。
keyにはアクセスキーを、your secret access keyにはシークレットアクセスキーをセットしてください。
<?php require './vendor/autoload.php'; $s3client = new Aws\S3\S3Client([ 'credentials' => [ 'key' => 'your access key id', 'secret' => 'your secret access key' ], 'region' => 'ap-northeast-1', 'version' => 'latest', 'scheme' => 'http', ]); $result = $s3client->putObject([ 'Bucket' => 's3-public-test-bucket', 'Key' => 'test.png', 'SourceFile' => 'test.png', 'ContentType' => mime_content_type('test.png'), ]);
5. test.png配置
アップロードする画像ファイル「test.png」を同じディレクトリ配下に以下の通り配置します。
6. スクリプト実行
以下コマンドでスクリプトを実行
$ php index.php
7. 画像アップロード確認
作成したS3バケットにテスト用画像がアップロードされたかを確認します。
以下のようにアップロードされていればOK。
8. 画像を公開
アップロードした画像を以下の通り公開します。
8. ブラウザ確認
発行されたオブジェクトURL↓にアクセスし画像が表示されることを確認すれば完了です。
オブジェクト URL
https://s3-public-test-bucket.s3-ap-northeast-1.amazonaws.com/test.png
今日もお疲れ様でした。