はじめに
非公開バケットを作り、画像と作品一覧を保存・取得し、同一の内容を確認して片付けます。
先に前段のポートフォリオラボを完了してください。この環境は必要な前段機能と独自のリソースを提供します。以前のインスタンス、ファイル、認証情報ではなく知識を引き継ぎます。
認定試験との関連
| 認定 | タスク | 練習内容 |
|---|---|---|
| AWS Certified Cloud Practitioner (CLF-C02) | Task 3.6 | EC2 の計算と分けて S3 オブジェクトストレージを使う。 |
ラボの概要

非公開ストレージを作る
このステップでは、作品素材の非公開 S3 バケットを作り、公開アクセスの保護設定を適用します。
EC2 はサイトを実行します。Amazon S3 はファイルをオブジェクトとして、名前付きの保存先であるバケットに保存します。素材をサーバーから分けて管理できます。このラボは新しいサイトとローカルファイルを用意し、バケットは自分で作ります。
用意されたプロジェクトへ移動します。
cd /home/labex/project
このラボの識別子を読み込み、バケット名を表示します。
source website.env
echo "$PORTFOLIO_BUCKET"
PORTFOLIO_BUCKET は用意された一意の名前で、バケットはまだありません。S3 は一意の名前を必要とするので、portfolio のような一般的な名前ではなく指定値を使います。
CLI の s3 はファイル操作に便利です。mb はバケットの作成、s3:// は S3 の場所を示します。
aws s3 mb "s3://$PORTFOLIO_BUCKET"
make_bucket の確認が表示されます。接続は us-east-1 を使い、バケットもその Region にあります。AWS View で名前を探します。
新しいストレージは初期状態で非公開です。Block Public Access は誤った公開許可を防ぐ保護です。用意された JSON の四つの設定が true であることを確認します。
cat private-access.json
各 true が保護を有効にします。s3api はアクセス設定などの個別操作を提供します。launch.json と同じように、file:// でローカルの設定を読み込み、値を一つずつ入力せずに済みます。
aws s3api put-public-access-block \
--bucket "$PORTFOLIO_BUCKET" \
--public-access-block-configuration file://private-access.json
更新に成功すると、出力なしでプロンプトに戻ります。保存された設定を S3 から読み返します。
aws s3api get-public-access-block --bucket "$PORTFOLIO_BUCKET"
四つの値が true で、AWS View のバケットに No objects と表示されることを確認します。reference バケットの keep.txt は別のデータなので変更しません。素材を保存する準備ができました。
素材を保存して取得する
このステップでは、三つの作品画像と一覧を保存し、AURA を取得して元のファイルとバイトを比較します。
portfolio-assets/ には四つのファイルがあります。WebP は画像形式で、projects.json は作品のタイトル、説明、画像参照です。サイトと画像は提供済みなので、保存に集中できます。
| ファイル | サイトでの用途 |
|---|---|
images/aura-brand.webp |
AURA |
images/forma-chair.webp |
FORMA |
images/echo-record.webp |
ECHO |
projects.json |
作品のタイトル、説明、画像参照 |
キーはバケット内のオブジェクト名です。images/aura-brand.webp は images/ プレフィックスを持ちますが、S3 の実際のフォルダーではありません。cp はコピー、--recursive はフォルダー内の全ファイルを相対パスのキーでコピーします。
aws s3 cp portfolio-assets/ "s3://$PORTFOLIO_BUCKET/" --recursive
四行の upload を確認します。続いて s3 ls で保存されたオブジェクトを一覧表示します。--recursive は images/ 以下のキーも含めます。
aws s3 ls "s3://$PORTFOLIO_BUCKET/" --recursive
四行には更新時刻、サイズ、キーが表示されます。三つの画像と projects.json を確認し、順番や具体的な時刻は気にしなくて構いません。AWS View にも同じ名前が表示されます。

コピー方向を逆にして、AURA を別のローカル名で取得します。
aws s3 cp "s3://$PORTFOLIO_BUCKET/images/aura-brand.webp" downloaded-aura.webp
cmp はファイルのバイトを比較します。元のファイルと取得したファイルを比べます。
cmp portfolio-assets/images/aura-brand.webp downloaded-aura.webp
出力なしでプロンプトに戻れば一致しています。実際の画像を保存し、そのまま取得できました。違う場合はキーを確認し、元の画像を再送信します。
非公開保存は完了です。サイトはまだローカルファイルを読むため、S3 への送信だけではページは変わりません。次のラボは同じ素材を保存済みの新環境から始め、アプリへの読取許可を学びます。
まとめ
非公開の S3 を作り、公開保護を設定して、三つの画像と一覧を保存し、一致するコピーを取得しました。保存されたオブジェクトと、それを使うサイトのアプリを区別しました。
公式ドキュメント: S3 objects, AWS CLI S3 file commands, Block Public Access.



