2020/12/16

AWS CLIを利用したAmazon S3の操作について解説!メリットも紹介

 
  

「AWS CLI」を利用した「Amazon S3」の操作について

「AWS CLI(AWS Command Line Interface)」から「Amazon S3(Amazon Simple Storage Service) 」をダイレクトに操作することが可能です。通常のマネジメントコンソール画面での操作と比較しても、同等の機能を利用することができます。 関連する用語の説明と、「AWS CLI」を利用するメリット、そして具体的な操作方法について解説していきます。

「AWS CLI」とは?

「AWS CLI(Command Line Interface)」とは、AWSの各サービスを「コマンドベース(AWSサービスへの命令言語による指示)」で操作するためのツールです。 AWS社から提供されており、Windows、Mac、Linuxといった様々なOS環境でインストールして利用することが可能となっています。 例えば、Windowsの場合は、「PowerShell」や「Windowsコマンドプロンプト」の操作ウィンドウから、Linuxの場合は、「シェル(bash、zsh、tcsh等)」のシェルプログラムからコマンドを実行することができます。

「Amazon S3(Amazon Simple Storage Service) 」とは?

「Amazon S3(Amazon Simple Storage Service)」とは、AWSのサービスの一つで、インターネット上で利用できるストレージです。 「Amazon S3」には利用できるストレージクラス(「S3 Standard」、「S3 Glacier Deep Archive」等)が幅広く用意されており、各ユースケースに合わせて選択することが可能です。 またAWSマネジメントコンソール画面といったGUI画面ベースでのファイルの保存や取得が可能ですが、今回紹介している「AWS CLI」からもコマンドベースで同等の機能が利用できます。

「Amazon S3」を操作するための「AWS CLI」のコマンド体系(2種類)

「AWS CLI」には、Amazon S3 へのアクセス用に2種類のコマンド体系が用意されています。 具体的には、以下の2種類のコマンド体系で「◯◯層」という呼び方をします。 (1)「s3層」 「s3層」とは、ファイルやバケットの作成、操作、削除といったベーシックなコマンド体系です。通常のユースケースであれば、こちらだけで対応することが可能です。 (2)「s3api層」 「s3api層」とは、「Amazon S3」を操作するためのAPIを「AWS CLI」から直接操作できるコマンド体系です。「s3層」だけでは実施できないような応用的な操作も可能となっています。

「AWS CLI」を利用した「Amazon S3」の操作方法

「AWS CLI」による「Amazon S3」の具体的な操作方法を解説していきます。 ここでは、「AWS CLI」 での「s3層」コマンドの使用例をご紹介します。

(1)バケットの作成

「s3 mb」コマンドでバケットを作成できます。 $ aws s3 mb s3://(バケット名) ※注意点 「バケット名」は、インターネット上でのバケットを特定してアクセスするために、「Amazon S3」全体で一意となるように設定する必要があります。

(2)バケットとオブジェクト(ファイル等)の一覧表示

「s3 ls」コマンドでバケットやオブジェクトを一覧表示できます。 $ aws s3 ls 2020-10-31 12:34:56 my-bucket1 2020-12-24 23:59:59 my-bucket2 ※注意点 ターゲットやオプションを指定しないと、すべてのバケットが一覧表示されます。大量のバケットが配置されていて一覧表示が見づらい場合には、オプションを指定して見やすくすることができます。

(3)バケットの削除

「s3 rb」コマンドでバケットを削除できます。 $ aws s3 rb s3://(バケット名) ※注意点 バケットを削除する前提として、バケットが「空」にしておく必要があります。もし「空」ではないバケットを削除する場合は、以下のように「–force」オプションを付加して実行します。 $ aws s3 rb s3://(バケット名) –force

(4)オブジェクトの削除

「s3 rm」コマンドでオブジェクトを削除できます。 $ aws s3 rm s3://(バケット名)/(削除対象のオブジェクト名) ※注意点 バケットの中身をすべて削除する場合は、以下のように「–recursive」オプションを付加して実行します。 $ aws s3 rb s3://(バケット名) –recursive

(5)オブジェクトのコピー

「s3 cp」コマンドでオブジェクトをコピーできます。 次の例では、「s3 cp」コマンドを使用して、現在の作業フォルダに配置してあるファイルを「Amazon S3」の指定したバケットにコピーしています。 $ aws s3 cp (ファイル名) s3://(バケット名) ※注意点 一部のファイルを除外する場合は、以下の例のように「–exclude」オプションを付加して実行します。 $ aws s3 cp . s3://(バケット名)/(対象のフォルダ) –exclude “*.txt” 上記の例では、「対象フォルダ」配下のファイルで、「テキストファイル(*.txt)」以外のすべてのファイルが作業フォルダにコピーされます。

(6)オブジェクトの同期

「s3 sync」コマンドで、バケットとローカルPC上のディレクトリとの内容を同期することができます。 次の例では、「s3 sync」コマンドを使用して、バケット (my-bucket) 内の Amazon S3 プレフィックス (path) の内容を現在の作業ディレクトリと同期します。 $ aws s3 sync . s3://my-bucket/path upload: MySubdirectory\MyFile3.txt to s3://my-bucket/path/MySubdirectory/MyFile3.txt upload: MyFile2.txt to s3://my-bucket/path/MyFile2.txt upload: MyFile1.txt to s3://my-bucket/path/MyFile1.txt なおコマンド入力後には、同期中に実行された具体的な操作内容が画面表示されます。 ※注意点 「s3 sync」は、フォルダの階層とファイル名を判断基準として、サイズや更新時間が異なるファイルを同期しています。 上記の操作例では、「MySubdirectory」とその内容を 「s3://my-bucket/path/MySubdirectory」と再帰的に同期されますが、ファイル名が同一のものが複数存在する場合には注意が必要です。

(7)ローカルPC上のログファイルをzip化して「AWS S3」上にバックアップする

最後に、ローカルPC上のログファイルをzip化し、「AWS S3」上にバックアップする方法について説明します。 以下の手順で作業を進めます。 ①ローカルPC上の「ログファイル」のzip化 以下のコマンドを実行します。 $ zip log_archive -r (対象フォルダ) adding: (対象フォルダ)/ (stored 0%) adding: (対象フォルダ)/file1.txt (deflated 38%) adding: (対象フォルダ)/file2.txt (stored 0%) ②ファイルの確認 次に、作成したzipファイルを確認します。 $ ls (対象フォルダ) log_archive.zip ③zipファイル(log_archive.zip)の「AWS S3」へのアップロード 以下のコマンドを実行します。 $ aws s3 cp ./log_archive.zip s3://(アップロード先のバケット名)/(バックアップフォルダ名)

「AWS CLI」を利用して「Amazon S3」を操作するメリットとは?

「AWS CLI」を利用するメリットは、AWS上での作業をシェルスクリプト等から「繰り返し」かつ「自動化」できる点です。 具体的には、以下のようなメリットを活かした例が考えられます。 (1)(上記で紹介したような)ローカルPCに自動的に蓄積される「ログファイル」について、ZIP化しながら定期的にAWS上に保存する操作を自動化する (2)ローカルPC上の「画像ファイル」について、「Amazon S3」にバケット(※PCでのフォルダに相当)を作成しながら特定のルールに基づいて繰り返し保存する いずれもAWSマネジメントコンソール画面で操作可能です。しかし、特定のルール化(つまり「アルゴリズム化」)できるのであれば、「Amazon CLI」の利用を検討してみてはいかがでしょうか?]]>

ITエンジニアへのキャリアチェンジならキャリアチェンジアカデミー

この記事の監修者・著者

株式会社オープンアップITエンジニア
株式会社オープンアップITエンジニア
未経験からITエンジニアへのキャリアチェンジを支援するサイト「キャリアチェンジアカデミー」を運営。これまで4500人以上のITエンジニアを未経験から育成・排出してきました。
・AWS、salesforce、LPICの合計認定資格取得件数:2100以上(2023年6月時点)
・AWS Japan Certification Award 2020 ライジングスター of the Year 受賞

おすすめの動画

  • 【未経験からIT業界へ転職するなら】相談窓口とスキルの獲得はここで解決!IT転職が一気に有利に!【キャリアチェンジアカデミー】

  • 【費用一切不要】未経験からIT業界へ転職するならまずはここへ相談!【キャリアチェンジアカデミー】

  • 【何のエンジニアになれるのか?】未経験からITエンジニアを目指すとこんな道がある【キャリアチェンジアカデミー】