aws-cli で S3 へファイルを一括アップロードする方法をご紹介します。
brew install awscli
$ aws --version
aws-cli/1.16.290 Python/3.7.5 Darwin/18.7.0 botocore/1.13.26
$ 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
本記事でも書き込み処理のコマンドには全て —dryrun オプションを付けています。本実行時には —dryrun オプションを削除して実行してください。
--dryrun オプションオブジェクトの書き込み系のコマンド(cp/mv/rm/sync)で利用できる最も重要なオプションです。 —dryrun オプションを付けることで、コマンドのシミュレーション結果が出力されます。あくまでシミュレーションであり実際にはコマンドは実行されません。 コマンドの結果が100%予測できる場合を除いて、このオプションを付けて挙動を確認してから実行することを推奨します。 以降のコマンド例には —dryrun オプションを付与しますので、コピー&ペーストの際にはご注意ください。
S3 bucket の一覧を出力するコマンドは以下のとおりです。
aws s3 ls --profile=YOUR_PROFILE_NAME
aws s3 cp access.log s3://your_bucket/ \\
--profile=YOUR_PROFILE_NAME \\
--dryrun
aws s3 sync . s3://your_bucket/ \\
--include "*" \\
--profile=YOUR_PROFILE_NAME \\
--dryrun
aws s3 sync . s3://your_bucket/ \\
--exclude "*" \\
--include "*.log" \\
--profile=YOUR_PROFILE_NAME \\
--dryrun
以上、AWS CLI で S3 へ *.log ファイルを一括アップロードしたい、現場からお送りしました。