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