見出し画像

S3にホスティングしたWEBサイトでS3に保存した画像を表示する(2024.9)


1-1.Reactプロジェクトのセットアップ

・左上の検索バーに「cloud9」を入力→「Cloud9」を選択
・linepictureuploadの「開く」を選択

・下部のターミナルエリアでコマンドを実行して、reactのプロジェクトを作成。
・コマンド:npx create-react-app my-image-gallery
 ※「my-image-gallery」は任意で

1-2.Reactプロジェクトの動作確認

・下部のターミナルエリアでコマンドを実行して、reactの開発サーバーを起動。
・コマンド:cd my-image-gallery
・コマンド:npm start

・上部の「Preview」→「Preview Running Application」

・この画面が表示されることを確認する。

2-1.aws-sdkのインストール

・ターミナルでコマンドを実行して、AWS SDKをインストールし、S3から画像のURLを取得する準備をする。
・コマンド:npm install aws-sdk

2-2.画像表示コンポーネントの作成

・左ペインの「src」を右クリック→「NewFile」を選択して、画像表示コンポーネントファイルを作成する。
・ファイル名:ImageGallery.js

・「ImageGallery.js」を右クリック→「Open」を選択して、コードを記述する。
・コードを記述したら、上部「File」→「Save」を選択して、保存する。

2-3.画像表示コンポーネントをメインコンポーネントにインポートする

・「App.js」を右クリック→「Open」を選択して、コードを記述する。

2-4.S3にアクセスするためのIAMユーザーを作成する

・AWSコンソールの左上の検索バーに「IAM」を入力→「IAM」を選択

・「ユーザー」を選択

・右「ユーザーの作成」を選択

・ユーザー名を入力して「次へ」を選択
・ユーザー名:image-gallery_REACT_APP_AWS

・以下を入力して「次へ」を選択
・許可のオプション:ポリシーを直接アタッチする
・許可ポリシー:AmazonS3ReadOnlyAccess

・「ユーザーの作成」を選択

2-5.アクセスキーを作成する

・IAMユーザー「image-gallery_REACT_APP_AWS」を選択→「セキュリティ認証情報」タブ→「アクセスキーを作成」を選択する。

・ユースケースを選択して「次へ」を選択
・ユースケース:AWSコンピューティングサービスで実行されるアプリケーション

・「アクセスキーを作成」を選択

・アクセスキーとシークレットアクセスキーを取得する。

2-6.envファイルを作成する

・cloud9の左ペインの「my-image-gallery」を右クリック→「NewFile」を選択して、envファイルを作成する。
・ファイル名:.env

・.envファイルを開き環境変数を記述して保存する。
・環境変数①:REACT_APP_AWS_ACCESS_KEY_ID=アクセスキー
・環境変数②:REACT_APP_AWS_SECRET_ACCESS_KEY=シークレットアクセスキー

・.gitignoreファイルを開き、以下のコードを記述して保存する。
・追加コード:.env
※ここで定義する意味があるのかは、まだわかっていない。
※画像参照

2-7.ホームページのパスを設定する

・package.jsonファイルを開き、下記の設定を記述して保存する。
・設定:"homepage": "http://linepicture.s3-website-us-east-1.amazonaws.com/website"

3-1.ビルド

・ターミナルでコマンドを実行して、ビルドする。
・コマンド:npm run build

3-2.S3へリリースする

・ターミナルでコマンドを実行して、S3にリリースする。
・コマンド①:cd build/
・コマンド②:aws s3 sync . s3://your-bucket-name/website

※S3の構成

4-1.S3のパブリックアクセスを有効にする

・AWSコンソールの左上の検索バーに「S3」を入力→「S3」を選択する。

・「linpicture」を選択する。

・「アクセス許可」タブを選択する。

・ブロックパブリックアクセス(バケット設定)の「編集」を選択する。

・チェックを外して「変更の保存」を選択する。

・「確認」を入力して「確認」を選択する。

4-2.S3のバケットポリシーを設定する

・バケットポリシーの「編集」を選択する。

・バケットポリシーを記述して「変更の保存」を選択する。

4-3.S3のCORSを設定する

・CORSの「編集」を選択する。

・CORSを記述して「変更の保存」を選択する。

4-4.S3のウェブサイトホスティングを設定する

・「プロパティ」タブを選択する。

・静的ウェブサイトホスティングの「編集」を選択する。

・下記を入力して「変更の保存」を選択する。
・静的ウェブサイトホスティング:有効にする
・ホスティングタイプ:静的ウェブサイトをホストする
・インデックスドキュメント:index.html

・URLを確認する。

5-1.動作確認

・パスの構成に合わせて、末尾に「/website/index.html」をつけてアクセスする。
http://linepicture.s3-website-us-east-1.amazonaws.com/website/index.html

6-1.【補足】S3の構成に合わせた登録側コードの修正

・cloud9で「lambda_function.py」を開いて、画像を保存するパスを修正する。
・修正前:s3.put_object(Bucket=bucket_name, Key=f"{message_id}.jpg", Body=response.content)
・修正後:s3.put_object(Bucket=bucket_name, Key=f"images/{message_id}.jpg", Body=response.content)

※リリース手順等 参照
https://note.com/zeke_magazine/n/n228fc37c3ebb





この記事が気に入ったらサポートをしてみませんか?