目次
1.AWS CLI導入後のコマンド実行について
前回記事にて「AWS CLI」をインストールし、コマンドプロンプト上でアクセスキー等の設定まで行いました。
これでCLIの利用が可能となります。
では、折角導入したので、実際にコマンドライン入力でAWSを操作してみましょう。
※こちらでは、基本的にはコマンドプロンプト上で操作していこうと思います。
なお、AWSの操作を行う各コマンドについてですが、下記の記事がかなり参考になります。
↓
aws-cli コマンド一覧/Qiita
色んなコマンドがあり、全て使いこなすのは大変ですよね。
なので、自分がよく使う機能から徐々に覚えていけばいいのではないでしょうか。
今回は、私が仕事で実践したS3の操作について、書いていきます。
S3のコマンド操作は比較的難易度は低いので、これを皮切りに徐々にCLIに慣れていこうかと思います。
※因みに、対象のIAMユーザーには予めS3関連のポリシーを付与した状態としますので、ご了承ください。
2.CLIによるS3操作
① バケットの作成
まずはオブジェクトを保存するためのバケットを作成してみましょう。
マネジメントコンソール画面から「S3」の画面に進んで「バケットを作成」を選択すれば、任意のバケットが作成できるのですが、折角CLIをインストールしたので、今回はコマンド入力で作成してみます。
aws s3 mb s3://{任意のバケット名}
このコマンドにて、S3にバケットが作成されます。非常にシンプルなコマンドですね。
ただ、気を付けないといけないのが、バケット名は全てのユーザー間でユニークにしなければならないという点です。
名称が被ってしまうとエラーが出力され、再度バケット名を考えなければならないので、注意してください。
今回は「masayun.s3.bucket」という名称のバケットを作成してみます。
C:\>aws s3 mb s3://masayun.s3.bucket
make_bucket: masayun.s3.bucket
作成が成功すると、上記のように「make bucket: ~」というメッセージが表示されます。

マネジメントコンソール画面からS3にアクセスしてみても、コマンド実行したバケットが無事作成されていることが確認できます。
② オブジェクトのアップロード/ダウンロード(1ファイル)
①でバケットの作成は成功しましたので、実際にオブジェクトのアップロード/ダウンロードといった基本的な操作をしてみます。

今回、PCの「ピクチャ」フォルダに5枚の画像ファイルを用意しましたので、これをオブジェクトとして利用し、S3操作を実践しようと思います。
現在、バケットの中は空っぽなので、まずはファイルをアップロードしてみましょう。
aws s3 cp {アップロード対象のファイル名} s3://{任意のバケット名}
↑こちらのコマンドにて、ファイルのバケットへのアップロードができます。
C:\Users\XXXXX\Pictures>aws s3 cp Picture-1.jpg s3://masayun.s3.bucket
upload: .\Picture-1.jpg to s3://masayun.s3.bucket/Picture-1.jpg
実際にコマンド実行してみると、「upload: ~」というメッセージが表示され、ファイルがオブジェクトとしてバケット内に格納されます。

マネジメントコンソール画面からS3にアクセスしてみると、対象のバケット内に先ほどの画像ファイルがオブジェクトとして格納されていることが確認できますね。これでアップロード処理成功となります。
では、今度はこのオブジェクトをローカル上にダウンロードしてみます。
aws s3 cp s3://{対象のバケット名}/{対象のオブジェクト名} {ダウンロード先の相対パス}
↑こちらのコマンドにて、ファイルのバケットへのダウンロードができます。
C:\Users\XXXXX\Downloads>aws s3 cp s3://masayun.s3.bucket/Picture-1.jpg ./
download: s3://masayun.s3.bucket/Picture-1.jpg to .\Picture-1.jpg
実際にコマンドを実行してみると、「Download~」のメッセージが表示し、ダウンロードが成功したことが確認できます。

ローカルPCのダウンロードフォルダを確認すると、「Picture-1.jpg」がダウンロードされていることが確認できます。
② オブジェクトのアップロード/ダウンロード(複数ファイルを一括で)
次は、S3からのオブジェクトの一括アップロードについてやってみます。
事前準備としてローカルPCのデスクトップ上に「S3」というフォルダを作成し、中に画像ファイルをいくつか格納しておきます。

こんな感じです。
まずは、この中身を利用して一括アップロードをやってみましょう。
まずはフォルダ毎、S3のバケットにアップロードします。コマンドは以下の通りです。
aws s3 cp {アップロード元のフォルダ名(相対パス)} s3://{対象のバケット名}/ --recursive
ここでの「–recursive」オプションは再帰処理という意味です。これを付与すると、対象フォルダ内の全ファイルをアップロードしてくれます。
(1つのファイルを繰り返し対象バケットにコピーしてくれるので、再帰処理であると言えます)
実際にコマンドを実行してみると、
C:\Users\XXXXX>cd Desktop
C:\Users\XXXXX\Pictures>aws S3 cp ./s3 s3://masayun.s3.bucket/ --recursive
upload: S3\Picture-5.JPG to s3://masayun.s3.bucket/Picture-5.JPG
upload: S3\Picture-4.JPG to s3://masayun.s3.bucket/Picture-4.JPG
upload: S3\Picture-1.JPG to s3://masayun.s3.bucket/Picture-1.JPG
upload: S3\Picture-2.JPG to s3://masayun.s3.bucket/Picture-2.JPG
upload: S3\Picture-3.JPG to s3://masayun.s3.bucket/Picture-3.JPG
このように、指定したフォルダ内のファイルが全てアップロードされていることが確認できます。
続いて、一括ダウンロードです。
一括アップロードはS3の画面上からも実行できますが、一括ダウンロードはCLIでのコマンド入力のみ実施可能です。
aws s3 cp s3://{対象のバケット名}/ {ダウンロード先のフォルダ名(相対パス)} --recursive
見ての通り、アップロード時とフォルダの指定が逆になっただけです。
「–recursive」のオプションはこちらでも付与してください。
では、実際にやってみましょう。今回は、デスクトップ上に「S3」というフォルダを作成し、そこに一括ダウンロードします。
C:\Users\XXXXX>cd Desktop
C:\Users\XXXXX\Desktop>aws s3 cp s3://masayun.s3.bucket/ ./s3 --recursive
download: s3://masayun.s3.bucket/Picture-5.JPG to s3\Picture-5.JPG
download: s3://masayun.s3.bucket/Picture-3.JPG to s3\Picture-3.JPG
download: s3://masayun.s3.bucket/Picture-1.JPG to s3\Picture-1.jpg
download: s3://masayun.s3.bucket/Picture-4.JPG to s3\Picture-4.JPG
download: s3://masayun.s3.bucket/Picture-2.JPG to s3\Picture-2.JPG
こんな感じで、対象バケットに格納されているオブジェクトが全て指定のフォルダにダウンロードされます。

対象のフォルダ内を見てみると、フォルダ内に一括でダウンロードされているのが確認できました。
まとめ
今回、CLIのコマンド入力にて、S3の操作を行いました。
数が少ない時はS3の画面上で1件ずつ処理しても差し支えないのですが、100とか200といった多数のファイルのアップロード/ダウンロードを行い場合は、コマンドにて実行する方が圧倒的に楽です。
ぜひ、試してみて下さい。
(今回はここまで)
お読みいただき、有難うございました!



コメント