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

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からダウンロードする際、ローカルに同名ファイルがあると上書きされるので注意
確認してみる。
cat downloaded-day33.txt
→無事ダウンロードができました✌️
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/
aws s3 ls s3://pomera-handson-day33/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 の例
