AWS CLI で S3 へファイルを一括アップロードするコマンド

aws-cli で S3 へファイルを一括アップロードする方法をご紹介します。

AWS | Amazon Web Services

前提条件

OS, aws-cli version

  • macOS Mojave version 10.14.6
  • aws-cli version 1.16.290

Homebrew で aws-cli インストール

brew install awscli
$ aws --version
aws-cli/1.16.290 Python/3.7.5 Darwin/18.7.0 botocore/1.13.26

aws-cli の初期設定

$ aws configure --profile=YOUR_PROFILE_NAME
AWS Access Key ID [None]: your_access_key
AWS Secret Access Key [None]: your_secret_access_key
Default region name [None]: ap-northeast-1
Default output format [None]: json

aws-cli で S3 へアップロード

本記事でも書き込み処理のコマンドには全て –dryrun オプションを付けています。本実行時には –dryrun オプションを削除して実行してください。

–dryrun オプション

オブジェクトの書き込み系のコマンド(cp/mv/rm/sync)で利用できる最も重要なオプションです。
–dryrun オプションを付けることで、コマンドのシミュレーション結果が出力されます。あくまでシミュレーションであり実際にはコマンドは実行されません。
コマンドの結果が100%予測できる場合を除いて、このオプションを付けて挙動を確認してから実行することを推奨します。
以降のコマンド例には –dryrun オプションを付与しますので、コピー&ペーストの際にはご注意ください。

🔗 引用元: –dryrun オプション | 私家版AWS CLI S3チートシート – Qiita

S3 bucket 一覧を出力する

S3 bucket の一覧を出力するコマンドは以下のとおりです。

aws s3 ls --profile=YOUR_PROFILE_NAME

S3 へファイルを1つだけアップロード

aws s3 cp access.log s3://your_bucket/ \
--profile=YOUR_PROFILE_NAME \
--dryrun

S3 へファイルを一括アップロード

aws s3 sync . s3://your_bucket/ \
--include "*" \
--profile=YOUR_PROFILE_NAME \
--dryrun

S3 へ拡張子 .log ファイルを一括アップロード

aws s3 sync . s3://your_bucket/ \
--exclude "*" \
--include "*.log" \
--profile=YOUR_PROFILE_NAME \
--dryrun

以上、AWS CLI で S3 へ *.log ファイルを一括アップロードしたい、現場からお送りしました。

参考情報