s3はawsのオブジェクトストレージサービスでgcpのgcsやazureのblogストレージなどと競合しているサービスです。aws cliを使ってs3をコマンドライン上で操作する方法を紹介します。
aws cliで操作できるS3コマンド一覧
s3をコマンドライン上で操作するにはaws cliをセットアップする必要があります。
aws cliのインストール方法は公式ドキュメントを参考にしてください
ここではLinux, x86システムへのaws cliのインストールを紹介しますが基本的には皆同じです。
#!/bin/bash
# get files and installs
curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
unzip awscliv2.zip
# インストール先: /usr/local/aws-cli SymLink /usr/local/bin
sudo ./aws/install
##updateの場合
sudo ./aws/install --update
# configure
aws configure
#入力例
#AWS Access Key ID [None]: ACESSKEYEXAMPLE2022
#AWS Secret Access Key [None]: ThisKeyIsGenerateFromAwsConsoleIamCreateUsers
#Default region name [None]: ap-northeast-1
#Default output format [None]: json
- aws s3 ls (s3://bucket-name)
- バケット及びバケットの中身のls
- aws s3 mb s3://create-bucket-name
- ↑バケットの作成
- aws s3 rb s3://remove-bucket-name
- ↑バケットの削除
- aws s3 rm s3://bucket-name/example/file.html
- ↑ファイルの削除
- aws s3 mv filename.txt s3://bucket-name
- ↑ファイルの移動
- aws s3 cp filename.txt s3://bucket-name
- ↑ファイルのコピー
- aws s3 sync filename.txt s3://bucket-name
- ↑ファイルの同期
- aws s3 presign s3://bucket-name/file.hetml –expires-in 3600
- ↑presign URL(一時的に有効なURL)の作成
- aws s3 mv filename.txt s3://bucket-name
- ↑ファイルの移動
aws cli でs3を操作する
# s3のバケットを作成する
aws s3 mb s3://test-bucket
# s3バケットを確認
aws s3 ls
2022-09-20 11:00:00 s3test-bucket
# コピー
## ドライラン (--excludeでtest*を除外 syncdirの中のファイルをコピー)
aws s3 cp --dryrun --exclude 'test*' /home/ec2-user/syncdir/ s3://s3test-bucket/ --recursive
## コピー
aws s3 cp --exclude 'test*' /home/ec2-user/syncdir/ s3://s3test-bucket/ --recursive
## 確認
# aws s3 ls s3://s3test-bucket/
2022-09-18 11:51:21 0 file1
## 削除
aws s3 rm s3://s3test-bucket/ --exclude 'home/*' --recursive --dryrun
aws s3 rm s3://s3test-bucket/ --exclude 'home/*' --recursive
(aws s3 rm s3://s3test-bucket/ --exclude '*' --include 'file*' --include 'test*' という指定もできる)
コピーのコマンドはrsyncみたいに使える。
同期する場合にはaws s3 sync(–delete)を使うのが良い