見出し画像

【AWS】 AWS CLI で Amazon S3 バケットの作成〜削除やってみた|1日1ハンズオン Day 33

こんにちは、ぽめら です。
本記事は1日1ハンズオン企画、第33回です!
引き続き Amazon S3 と AWS CLI に触れます。
今回は、S3 バケットの作成〜削除をCLIからチャレンジ🪣

AWS公式サイトより


1.はじめに

前回は、AWS CLI を使用して Amazon S3 バケットへのファイル複数アップロード・同期の検証をしました。今回はその続きとなります。

題材はドキュメントのチュートリアルを選択しました。

というわけで、レッツハンズオン!


2.AWS CLI から Amazon S3 バケットの作成〜削除やってみた

今回の主な流れは下記の通りです。

  • S3 バケットの作成

  • S3 バケットにオブジェクトアップロード

  • S3 バケットからオブジェクトダウンロード

  • オブジェクトをフォルダにコピー

  • S3 バケットの削除

2-1.S3 バケットの作成

S3 バケットの作成は 'aws s3api create-bucket' コマンドで行います。
雛形は下記の通りです。

aws s3api create-bucket \
  --bucket <バケット名> \
  --region <リージョン> \
  --create-bucket-configuration LocationConstraint=<リージョン>

👉 今回は pomera-handson-day33 を作成しました。

aws s3api create-bucket \
  --bucket pomera-handson-day33 \
  --region ap-northeast-1 \ # 東京リージョン
  --create-bucket-configuration LocationConstraint=ap-northeast-1
# バケット名はグローバルで一意である必要あり(他人と重複不可)
# 一度作成したリージョンは変更不可

実行すると下記のように返ってくる。

作成後は一覧で確認。

aws s3 ls
無事作成されていることを確認✌️

2-2.S3 バケットにオブジェクトアップロード

オブジェクトのアップロードは 'aws s3 cp' コマンドで行います。
雛形は下記の通りです。

aws s3 cp <ローカルファイル> s3://<バケット名>/

実際にテキストを作成してアップロード。

echo "Hello, Amazon S3 Day33" > day33.txt
aws s3 cp day33.txt s3://pomera-handson-day33/
# デフォルトではバケット所有者強制(BucketOwnerEnforced)が有効でACLは無効化されています
#  → セキュリティ的に安全なので、通常はこのままでOK

確認。

aws s3 ls s3://pomera-handson-day33/
無事作成されていることを確認✌️

2-3.S3 バケットからオブジェクトダウンロード

オブジェクトのダウンロードも 'aws s3 cp' コマンドで行います。
雛形は下記の通りです。

aws s3 cp s3://<バケット名>/<オブジェクトキー> <ローカル保存先>(+任意で保存名)

実際に実行(今回は作業ディレクトリ直下に、downloaded-day33.txtの名前で保存するように記述しています)。

aws s3 cp s3://pomera-handson-day33/day33.txt ./downloaded-day33.txt
# S3からダウンロードする際、ローカルに同名ファイルがあると上書きされるので注意
downloadの結果

確認してみる。

cat downloaded-day33.txt
catの結果
→無事ダウンロードができました✌️

2-4.オブジェクトをフォルダにコピー

S3内でのコピーは aws s3 cp を使います。
雛形は下記の通りです。

aws s3 cp s3://<コピー元>/<ファイル名> \
  s3://<コピー先>/<フォルダ名>/<ファイル名>

フォルダ風にコピーしてみます。

aws s3 cp s3://pomera-handson-day33/day33.txt \
  s3://pomera-handson-day33/folder1/day33.txt
# S3には実際のフォルダは存在せず、キーのプレフィックスとして表現されます
コピーの結果

確認。

aws s3 ls s3://pomera-handson-day33/
バケット直下には2-2でアップロードしたファイルと、folder1のプレフィックスが存在
aws s3 ls s3://pomera-handson-day33/folder1/
folder1のプレフィックス内を確認し、コピーしたファイルが存在することを確認✌️

2-5.S3 バケットの削除

最後に作ったバケットの削除をしておしまいにします!
削除は 'aws s3 rm'(バケット内のオブジェクトを削除) 'aws s3api delete-bucket'(バケット削除)を組み合わせます。
雛形は下記の通りです。

aws s3 rm s3://<バケット名> --recursive
aws s3api delete-bucket --bucket <バケット名> --region <リージョン>

実際にクリーンアップ。
下記ではバケットの中身を削除したのち、バケットを削除しています。

aws s3 rm s3://pomera-handson-day33 --recursive
再帰的に逐次削除されていく
aws s3api delete-bucket --bucket pomera-handson-day33 --region ap-northeast-1
# ※ バケット削除は取り消し不可
# ※ 同じ名前を再利用できる保証ないことも注意

確認。

aws s3 ls

👉無事削除されていることを確認できました!


というわけで今回の「CLI から S3 バケットの作成〜削除」は以上です🤗


3.まとめ

今回は S3 バケットに対してCLIから「作成 → 利用 → 削除」 する流れを試しました。整理してみると下記の通り。

  • create-bucket で新規作成(※一意な名前が必要)

  • cp でアップロード・ダウンロード(※ACLはデフォルト無効で安全)

  • フォルダ風コピー(※実際にはキーのプレフィックス)

  • rm & delete-bucket でクリーンアップ(※削除は不可逆)

GUIでの操作はもちろん便利なのですが、コードでこうしたリソースの管理をする機会が実務では想定されるだろうな…という考えから今回のチュートリアルを試してみました。

CLIを通すと操作の裏側が理解できて、ただのクリック操作よりも知識が定着しますね✍️


というわけで今日はここまで!

ではまた明日👋


4.参考リンク

・Amazon S3 とは - AWS ドキュメント

・AWS CLI コマンドリファレンス (s3api)

・AWS CLI を使用した Amazon S3 の開始方法

・AWS CLI を使用する Amazon S3 の例


いいなと思ったら応援しよう!