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

非公開ストレージを作る
このステップでは、 保護されたバケットを作ります。EC2 はコードを実行し、S3 はファイルをバケット内のオブジェクトとして保存します。サーバー上だけの 1 コピーに依存しません。
プロジェクトへ移動します。
cd /home/labex/project
PORTFOLIO_BUCKET は用意された一意の名前ですが、バケットはまだありません。名前は AWS パーティション内でグローバルに一意である必要があります。
source website.env
echo "$PORTFOLIO_BUCKET"
s3 mb が作成し、s3:// は S3 の場所です。接続は us-east-1 を使います。
aws s3 mb "s3://$PORTFOLIO_BUCKET"
private-access.json の 4 つの true は Block Public Access を有効にし、意図しない公開を防ぎます。
cat private-access.json
s3api で設定ファイルを適用します。
aws s3api put-public-access-block --bucket "$PORTFOLIO_BUCKET" --public-access-block-configuration file://private-access.json
読み返して 4 項目の true を確認します。
aws s3api get-public-access-block --bucket "$PORTFOLIO_BUCKET"
AWS View に空バケットが出ます。reference バケットと keep.txt は残します。新しいストレージはデフォルトで非公開で、この設定は公開 ACL やポリシーに追加の保護を与えます。
素材を保存して取得する
このステップでは、 用意された 4 ファイル images/aura-brand.webp、images/forma-chair.webp、images/echo-record.webp、projects.json を保存します。WebP は画像形式です。JSON は詳細パネルの文章と画像参照を提供します。コード、フォントとコンパイル済み Tailwind CSS は提供済みです。
cp と --recursive が portfolio-assets/ 内の全ファイルをコピーします。相対パスは Key となり、images/ は名前のプレフィックスで、実際の S3 フォルダーではありません。4 行の upload を確認します。
aws s3 cp portfolio-assets/ "s3://$PORTFOLIO_BUCKET/" --recursive
Contents と AWS View で正確な 4 Key を確認します。
aws s3api list-objects-v2 --bucket "$PORTFOLIO_BUCKET"
転送方向を逆にして 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
非公開保存は完成です。サイトはまだローカル素材を使います。次のラボで 3 画像と JSON の S3 読取を認可し、バケットは非公開を維持します。

自分のリソースだけを削除する
このステップでは、 オブジェクト、空バケットとサーバーを片付けます。
rm と --recursive が確認済みの自分のバケット内の 4 オブジェクトを削除します。参照バケットを選ばないでください。
aws s3 rm "s3://$PORTFOLIO_BUCKET/" --recursive
rb が空になった自分のバケットを削除します。
aws s3 rb "s3://$PORTFOLIO_BUCKET"
サーバー ID を表示します。
echo "$INSTANCE_ID"
このインスタンスだけを終了します。
aws ec2 terminate-instances --instance-ids "$INSTANCE_ID"
terminated を待ちます。
aws ec2 wait instance-terminated --instance-ids "$INSTANCE_ID"
自分のバケットは消え、keep.txt は残ります。ネットワークを保持します。次のラボは別環境です。
まとめ
素材を非公開保存し、同じバイトを取り出して自分のリソースだけを削除しました。
公式ドキュメント: S3 objects, AWS CLI S3 file commands, Block Public Access.



