MacでCLIを使用し、S3を操作する方法について記載します。
本記事はCLIの設定から基本操作(ls,mb,cp,mv,rm,rb)をするところまでを対象としています。
CLIのインストール
インストール方法についてはこちらの記事をご参照ください。(Mac用)
【AWS】CLIをMacにコマンドラインでインストールする
CLIの設定
CLIをインストールしたMacのターミナルから以下のコマンドを実行します。
$ aws s3 ls
Unable to locate credentials. You can configure credentials by running "aws configure".
初期状態だと、CLIの設定がされていないため、上記のようにaws configureコマンドで設定を行うようにメッセージが表示されます。
設定を行うにはAWSの操作を行うユーザーのAWS Access Key IDとAWS Secret Access Keyが必要となります。
マネジメントコンソールのIAMにアクセスし、左ペインのユーザー→対象ユーザー名→認証情報タブ→アクセスキーの作成ボタンの順にクリックしてこれらの情報を作成、確認します。



AWS Access Key IDとAWS Secret Access Keyは第三者に知られてしまうと、勝手にAWSの操作をされてしまう可能性があるので注意が必要です。
次にターミナルで、aws configureコマンドを実行し、先ほど確認したAWS Access Key IDとAWS Secret Access Keyを入力します。
Default region nameは使用したいリージョンを指定します。ここではap-northeast-1(東京)としています。
Default output formatはひとまずjsonとしています。指定しなくてもデフォルトでjsonとなります。
$ aws configure
AWS Access Key ID [None]: AXXXXXXXXXXYYYYW
AWS Secret Access Key [None]: aXXXXXXXXXXXxxxyyyyYYYYYYYY
Default region name [None]: ap-northeast-1
Default output format [None]: json
設定が終わったらaws s3 lsを実行してみます。
設定が成功していればメッセージが表示されなくなっています。
$ aws s3 ls
$
ちなみにaws configureで設定した情報は/Users/[ログインユーザー名]/.awsのconfig 及びcredentialsに格納されます。
バケットの作成
aws s3 mb s3://[バケット名]コマンドを使用するとバケットの作成を行うことができます。
以下の例ではtestbucket202201231バケットを作成しています。
$ aws s3 mb s3://testbucket202201231
make_bucket: testbucket202201231
コマンド実行後、マネージメントコンソールでS3を確認すると、今作成したバケットが存在することを確認できます。

注意点としては、S3バケットの名前はAWS全アカウントでユニークである必要があるため、既にあるバケット名でバケットを作成することはできません。
作成しようとすると次のようなメッセージが表示されます。
$ aws s3 mb s3://testbucket1
make_bucket failed: s3://testbucket1 An error occurred (BucketAlreadyExists) when calling the CreateBucket operation: The requested bucket name is not available. The bucket namespace is shared by all users of the system. Please select a different name and try again.
バケットにファイルをアップロードする
aws s3 cp [ローカルファイル名] s3://[バケット名]でローカルのファイルをS3のバケットにアップロードすることができます。
下記例ではカレントディレクトリのtest.txtを先ほど作成したS3バケットにアップロードしています。
$ aws s3 cp test.txt s3://testbucket202201231
upload: ./test.txt to s3://testbucket202201231/test.txt
バケットのファイルを確認する
aws s3 ls s3://[バケット名]でバケットの中身を確認できます。
下記の例では先ほどアップロードしたtest.txtの存在を確認しています。
$ aws s3 ls s3://testbucket202201231
2022-01-23 16:35:09 0 test.txt
バケットのファイル名を変更する
aws s3 mv s3://[バケット名]/[変更前のファイル名] s3://[バケット名]/[変更後のファイル名] でバケットの中のファイル名を変更することができます。
下記の例では先ほどアップロードしたtest.txtをtest2.txtに名前を変更しています。
$ aws s3 mv s3://testbucket202201231/test.txt s3://testbucket202201231/test2.txt
move: s3://testbucket202201231/test.txt to s3://testbucket202201231/test2.txt
$ aws s3 ls s3://testbucket202201231
2022-01-23 16:41:05 0 test2.txt
バケットからファイルをダウンロードする
aws s3 cp s3://[バケット名]/[ダウンロードするファイル名] [ローカルのダウンロード先]のコマンドを実行することで、バケットからファイルをダウンロードできます。
下記例では、バケットにあるtest2.txtをダウンロードしています。
$ aws s3 cp s3://testbucket202201231/test2.txt .
download: s3://testbucket202201231/test2.txt to ./test2.txt
ls -lで確認すると、ファイルがダウンロードされていることを確認できます。
$ ls -l test2.txt
-rw-r--r-- 1 macuser staff 0 1 23 16:41 test2.txt
バケットのファイルを削除する
aws s3 rm s3://[バケット名]/[削除するファイル名]を使用することで、バケットの中のファイルを削除できます。
下記例ではtestbucket202201231バケットのtest2.txtを削除しています。
$ aws s3 rm s3://testbucket202201231/test2.txt
delete: s3://testbucket202201231/test2.txt
$ aws s3 ls s3://testbucket202201231
$
バケットの削除
aws s3 rb s3://[バケット名]を実行するとバケットを削除できます。
バケットを削除するには、バケットが空である必要があります。
$ aws s3 rb s3://testbucket202201231
remove_bucket: testbucket202201231