2022.01.23  

【AWS】CLIからS3を操作する(ls,mb,cp,mv,rm,rb)

AWS,  Mac    

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 IDAWS Secret Access Keyが必要となります。

マネジメントコンソールのIAMにアクセスし、左ペインのユーザー→対象ユーザー名認証情報タブ→アクセスキーの作成ボタンの順にクリックしてこれらの情報を作成、確認します。

AWS Access Key IDAWS Secret Access Keyは第三者に知られてしまうと、勝手にAWSの操作をされてしまう可能性があるので注意が必要です。

次にターミナルで、aws configureコマンドを実行し、先ほど確認したAWS Access Key IDAWS 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/[ログインユーザー名]/.awsconfig 及び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.txttest2.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
コメント
現在コメントはありません。
コメントする
コメント入力

名前 (※ 必須)

メールアドレス (※ 必須 画面には表示されません)

送信