【AWS】 Amazon S3 に AWS CLI からファイル複数アップロード等試してみた|1日1ハンズオン Day 32
こんにちは、ぽめら です。
本記事は1日1ハンズオン企画、第32回です!
今回は、Amazon S3 に AWS CLI から複数ファイルのアップロードと、関連オプションについて学んでみました🥷

1.はじめに
前回は、AWS CLI を使用した Amazon S3 へのファイル単体アップロードをおこないました。今回はその続きとなります。
題材は引き続き「AWS Hands-on for Beginners - AWS 上で静的な Web サイトを公開しよう!」。そして今回チャレンジするのは「続・静的コンテンツの開発 + AWS CLI で S3 に複数のファイルを一括アップロードする」です。
前回と同じくAWS CLI だけを使用しています。また、ハンズオン動画だけだと実利用イメージが沸かなかったため、複数ファイルのアップロード方法に加えてその他オプションについて調べた内容もメモしています✍️
というわけで、レッツハンズオン!
2.Amazon S3 に AWS CLI から複数ファイルをアップロードしてみた
今回の主な流れは下記の通りです。
S3 にAWS CLI から複数ファイルをアップロード
差分アップロード
動作確認
対象限定
2-1.S3に複数ファイルをアップロード
前回の単体ファイルアップロードのコマンドに'--recursive'をつけて実行。
これにより、cpコマンドが複数回実行されます。
(事前にsample2と3を作って実行してみました)
aws s3 cp <ローカルのファイルパス> s3://<バケット名>/ --recursive
前回アップロードした'sample.txt'も含めて、フォルダに格納していたファイル全てに対してcpコマンドが実行されている様子が見て取れます。
('--recursive'じゃなく、cpコマンドを2回実行しても同じ結果になる)

"ふむ…。複数ファイルをアップできるのはいいけど、上書きしたくない"という場合もありますよね、きっと🫤
というわけで調べた内容を以下でメモしていきます!
2-2.S3にファイルを差分アップロード
まずは情報を整理します!
① 差分アップロードには 'sync' を使用する。
aws s3 sync <ローカルのファイルパス> s3://<バケット名>/② 下記オプションも使用可能。
・'--dryrun':仮想実行で確認
aws s3 sync <ローカルのファイルパス> s3://<バケット名>/ --dryrun・'--exclude':同期しない
・'--include':同期対象にする
aws s3 sync <ローカルのファイルパス> s3://<バケット名>/ --exclude
aws s3 sync <ローカルのファイルパス> s3://<バケット名>/ --include※ 優先度は exclude → include
というわけで、実践!
👉sample3を更新
echo "This is an update." >> sample3.txt # sample3.txt に This is an update. を書き込み
cat sample3.txt # 中身を確認(すると下記のようになっているはず)
>>>This is an update.👉'sync' を 'dryrun'オプションをつけて実行

👉(検証用として)sample2.txtを修正
$ echo "Don't sync" >> sample2.txt
$ cat sample2.txt
>>>Don't sync👉'exclude'/'include'オプションを検証
$ aws s3 sync <ローカルのファイルパス> s3://<バケット名> \
--exclude "sample2.txt" \
--include "sample.txt" \
--dryrun
sample.txtは変更していないので'include'しても認知されず、sample2.txtは変更を加えられているが'exclude'されているので認知されていない。結果として、sample3.txtだけがsyncの対象となる。
👉期待した結果通り!
👉オプションなしで'sync'してみる
aws s3 sync ./ s3://<バケット名>
aws s3 ls の確認結果も下記の通り。

うむ、これなら実践でも使える感じになるかな🥷
無事 S3 バケットに AWS CLI から複数ファイルのアップロードに成功しました!またオプションも設定することで、ただアップロードするだけでなく対象を指定する方法についても触れました🫶
というわけで「続・静的コンテンツの開発 + AWS CLI で S3 に複数のファイルを一括アップロードする」は以上です🤗
3.まとめ
今回はS3 バケットへ AWS CLI から複数ファイルをアップロードする方法にチャレンジしました!
ただアップするだけでなく、オプションも確認できてよかったです🤗
というわけで今日はここまで!
ではまた明日👋
4.参考リンク
・AWS初心者向けハンズオン - AWS上で静的なWeb サイトを公開しよう!
・S3サービス紹介ページ
・S3ドキュメント
