AWS CLI S3 コマンド クイックリファレンス


AWS CLIインストール

macOS
$ brew install awscli
Windows
> winget add Amazon.AWSCLI

Windows で管理者権限でインストールが行えないなどの場合、以下でインストールファイルを抽出することで対応できる。

> msiexec /a %USERPROFILE%\Downloads\AWSCLIV2.msi /qb TARGETDIR=<path_to_install>\awscli
> path <path_to_install>\awscli\Amazon\AWSCLIV2;%PATH%
> aws --version


初期設定(認証設定)

$ aws configure
AWS Access Key ID [None]: XXXXXXXXXXXXXXXXXXXX
AWS Secret Access Key [None]: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Default region name [None]: ap-northeast-1
Default output format [None]: json

~/.aws/credentials にAccess Key IDとSecret Access Key、~/.aws/config に region と output format が保存される。

プロファイルを分ける場合は以下で設定追加する(指定無し時は default プロファイルとなる)。

aws configure --profile myProfile

プロファイルは環境設定で切り替え。

export AWS_PROFILE=myProfile

PowerShell の場合は以下。

$env:AWS_PROFILE = 'myProfile'


バケットを一覧表示

$ aws s3 ls


オブジェクトの一覧表

bucket-name/example/ 内のオブジェクトを一覧

$ aws s3 ls s3://bucket-name/example/

サブディレクトリ内全て

$ aws s3 ls s3://bucket-name/example/ --recursive


オブジェクトの削除

$ aws s3 rm s3://my-bucket/path/MySubdirectory/MyFile3.txt

s3://my-bucket/path とそのすべての内容を削除。

$ aws s3 rm s3://my-bucket/path --recursive


オブジェクトの移動

s3://bucket-name/example から全てのオブジェクトを s3://my-bucket/ に移動

$ aws s3 mv s3://bucket-name/example s3://my-bucket/

ローカルファイルをバケットに移動

$ aws s3 mv filename.txt s3://bucket-name

バケット内オブジェクトを現在ディレクトリに移動

$ aws s3 mv s3://bucket-name/filename.txt ./ 


オブジェクトのコピー

s3://bucket-name/example から全てのオブジェクトを s3://my-bucket/ にコピー

$ aws s3 cp s3://bucket-name/example s3://my-bucket/

echo 結果を s3://bucket-name/filename.txt ファイルにストリーム

$ echo "hello world" | aws s3 cp - s3://bucket-name/filename.txt

s3://bucket-name/filename.txt ファイルをコンソールに出力

$ aws s3 cp s3://bucket-name/filename.txt -


オブジェクトの同期

現在ディレクトリをソースとし、S3 my-bucket/path に内容を同期する(アップロードする)。 サブディレクトリを含んで処理される。

$ aws s3 sync . s3://my-bucket/path

aws s3 sync . s3://my-bucket/path --delete のように --delete オプションを指定すれば、ローカルディレクトリから削除したファイルがS3から削除される。

S3 my-bucket/path の内容を現在ディレクトリに同期する(ダウンロードする)。

$ aws s3 sync s3://my-bucket/path .

バケット同士の同期

$ aws s3 sync s3://my-bucket/path s3://dest-bucket/path  --delete


バケットの作成

$ aws s3 mb s3://bucket-name


バケットの削除

--force 付きでバケットとその内部のオブジェクトを全て削除

$ aws s3 rb s3://bucket-name --force