1. 序章

このチュートリアルでは、 Amazon Webservices (AWS)コマンドラインインターフェイス(CLI)を利用してAmazonの Simple StorageServiceと連携する方法を見ていきます。

2. Amazon S3

S3は、一般に呼ばれているように、AWS が提供するクラウドホスト型ストレージサービスであり、その柔軟性、スケーラビリティ、耐久性と比較的低コストで非常に人気があります。 S3では、オブジェクトという用語を使用して、バケットに保存されているファイルや画像などの個々のアイテムを指します。バケットはルートフォルダーに似ており、バケット内のフォルダーはプレフィックスと呼ばれます。

S3を使用すると、データにアクセスできるユーザーと、そのデータの編集に関してユーザーが持つ権限を完全に制御できます。 権限は、完全にパブリックにアクセスおよび編集可能なバケットから完全にプライベートなものまでさまざまです。 S3を構成してWebサイトをホストすることもできます。

AWS S3CLIを使用してS3で実行できるいくつかの一般的なタスクを見てみましょう。

3. S3でバケットを作成する

3.1. デフォルト領域でのS3バケットの作成

これから説明する最初のコマンドは、S3 で新しいバケットを作成するために使用されるmb(バケットの作成)コマンドです。 mb を使用すると、AWSCLIのインストール時にデフォルトのリージョンとして選択したリージョンにバケットを作成できます。

$ aws s3 mb s3://linux-is-cool

出力をチェックして、バケットが正常に作成されたことを確認しましょう。

make_bucket: linux-is-cool

S3でlinux-is-coolというバケットが正常に作成されました。 バケットは、CLIの設定中に設定されたAWSのデフォルトリージョンに作成されます。

3.2. 特定の地域でS3バケットを作成する

ベースmbコマンドにregionパラメーターの値を追加するだけで、任意のAWSリージョンにバケットを作成できます。

$ aws s3 mb s3://linux-is-awesome --region eu-central-1

バケットが正常に作成されたことを再度確認します。

make_bucket: linux-is-awesome

これで、指定したリージョンにlinux-is-awesomeというバケットを作成しました。

4. バケットの一覧表示

4.1. 利用可能なすべてのバケットの一覧表示

いくつかのバケットを作成したので、 ls(list)コマンドを使用してS3内のすべてのバケットのリストを取得する方法を見てみましょう。

$ aws s3 ls

これはlsコマンドの基本形式であり、その実行から得られる出力は、S3内のすべてのバケットのリストと、各バケットが作成された日時です。

2019-11-16 19:10:17  linux-is-awesome
2019-11-16 19:09:59  linux-is-cool

4.2. 特定のバケットのルートにあるアイテムの一覧表示

特定のバケットの内容にのみ関心があるとしましょう。 基本のlsコマンドを改善して、バケット名をパラメーターとして追加することにより、その特定のバケットの詳細を取得できます。 これにより、そのバケットのルートに含まれるアイテムが表示されます。

$ aws s3 ls s3://linux-is-awesome

今回の出力がどのようになるか見てみましょう。

                    PRE      subFolder/
2019-11-16 19:53:53 232059   README.md
2019-11-16 20:03:22 0        delete-me
2019-11-16 19:54:50 5242880  output.log

各オブジェクトの作成日時とサイズも返されます。 プレフィックス(フォルダ)は、詳細列で「PRE」で表され、作成日やサイズは返されません。

4.3. 特定のバケット内のすべてのアイテムの一覧表示

ls コマンドにバケット名を追加すると、バケットのルートにあるコンテンツのみが返されます。 幸い、 ls コマンドを使用すると、バケットのすべての内容を再帰的に一覧表示できます

$ aws s3 ls s3://linux-is-awesome --recursive --human-readable

このコマンドでは少し余分なことが起こっているので、分解してみましょう。 まず、 –recursive フラグを追加しました。これは、 ls コマンドに、 linux-is-awesome のすべてのプレフィックス(フォルダー)内のすべてのオブジェクトを再帰的に一覧表示するように指示します。バケツ。

さらに含まれているのは、 –人間が読める形式のフラグです。これは、人間が読める形式でオブジェクトのサイズを返します。 このコマンドの出力を見てみましょう。

2019-11-16 19:53:53  226.6 KiB   README.md
2019-11-16 20:03:22  0 Bytes     delete-me
2019-11-16 19:54:50  5.0 MiB     output.log
2019-11-16 19:53:47  226.6 KiB   subFolder/README.md

予想どおり、バケット内のすべてのオブジェクトのリストと、人間が読める形式のオブジェクトサイズが表示されます。

5. S3バケットの削除

5.1. 空のS3バケットを削除する

空のバケットを削除したい場合があります。 そのとき、 rb (バケットの削除)コマンドが機能します。

$ aws s3 rb s3://linux-is-cool

削除するバケットの名前をrbコマンドに渡すだけです。 rbコマンドは、バケットが空の場合にのみバケットを削除します。

そして、受け取った出力は、バケットが削除されたことを確認します。

remove_bucket: linux-is-cool

5.2. S3バケットを強制的に削除する

rbコマンドの基本形式を使用して空のバケットを削除する方法を見てきました。 空でないバケットを削除するのはどうですか?

rbコマンドに–forceフラグを追加することで、オブジェクトを含むバケットを削除できます。 これにより、バケットが強制的に削除されます。

$ aws s3 rb s3://bucket-with-objects --force

いつものように、出力をチェックして、コマンドが正常に実行されたことを確認します。 このインスタンスで取得する出力には、バケット自体が最終的に削除される前に削除される個々のオブジェクトが一覧表示されます。

delete: s3://bucket-with-objects/console.log
delete: s3://bucket-with-objects/catalina.out
remove_bucket: bucket-with-objects

–force フラグを使用する場合は注意が必要です。コマンドが正常に実行されると、はデータを回復できなくなります

6. オブジェクトとバケットの操作

バケットを作成および操作する方法を理解するために、しばらく時間を費やしました。 次に、S3CLIを使用してS3内のオブジェクトを操作する方法を見てみましょう。

6.1. バケットへのファイルのコピー

cp (コピー)コマンドを使用して、ローカルディレクトリからS3バケットにファイルをコピーできます。

cp コマンドに、ローカルファイル(ソース)の名前と、ファイルをコピーするS3バケット(ターゲット)の名前を指定します。

$ aws s3 cp new.txt s3://linux-is-awesome

コマンドが完了すると、ファイルオブジェクトが正常にアップロードされたことを確認できます。

upload: .\new.txt to s3://linux-is-awesome/new.txt

さらに進んで、この簡単なコマンドを使用して、S3にコピーするファイルに新しい名前を付けることができます。 これは、コピーを実行するときに新しいファイル名を指定することで実現できます。 これがどのように機能するかを見てみましょう。

$ aws s3 cp new.txt s3://linux-is-awesome/new-from-local.txt

これで、 new.txtlinux-is-awesomeバケットにアップロードし、名前をnew-from-local.txtに変更しました。

それだけではありません。 cp コマンドを使用して、あるバケットから別のバケットにオブジェクトをコピーできます。 この例では、ソースの場所とターゲットの場所の両方としてバケットを指定します。

$ aws s3 cp s3://linux-is-awesome/new-from-local.txt s3://a-back-up-bucket/file.txt

前と同じように、出力をチェックして、すべてが正しく機能したことを確認します。

copy: s3://linux-is-awesome/new-from-local.txt to s3://a-back-up-bucket/file.txt

6.2. バケットからオブジェクトをコピーする

cp コマンドを使用して、S3バケットからオブジェクトを取得し、ローカルに保存することもできます。

cp コマンドを再度使用しますが、今回は、バケット名とオブジェクトキーをソースとして配置し、ローカルディレクトリをターゲットとして使用します。

$ aws s3 cp s3://linux-is-awesome/new-from-local.txt copied-from-s3.txt

確認出力は、S3オブジェクト new-from-local.txt が現在のフォルダーにダウンロードされ、copyed-from-s3.txtに名前が変更されたことを示しています。

download: s3://linux-is-awesome/new-from-local.txt to .\copied-from-s3.txt

6.3. オブジェクトを移動する

次に、 mv (移動)コマンドを見てみましょう。 mvコマンドは、S3バケットを操作するときにオブジェクトを移動するために使用されます。 cp コマンドと同様に、mvコマンドを使用してバケット間でアイテムを移動できます。 、またはバケットとローカルフォルダの間。

mvコマンドの基本形式は、最初のパラメーターとしてソースを受け取り、次に2番目のパラメーターとして宛先を受け取ります。 ローカルファイルをバケットに移動する例を見てみましょう。

$ aws s3 mv my-local-file.log s3://linux-is-awesome/moved-from-local.log

次に、ファイルが正常に移動されたことを確認する出力を確認します。

move: .\my-local-file.log to s3://linux-is-awesome/moved-from-local.log

S3バケットからローカルフォルダーにファイルを移動するのも同じくらい簡単です。 moved-from-local.logファイルをローカルフォルダーに戻しましょう。

$ aws s3 mv s3://linux-is-awesome/moved-from-local.log .

上記のコマンドではターゲットディレクトリのみを指定することを選択し、ファイルの名前は指定しませんでした。 私たちが期待しているのは、ファイルが以前と同じ名前のローカルディレクトリに移動されることです— moved-from-local.log。 私たちの出力はこれを確認します:

move: s3://linux-is-awesome/moved-from-local.log to .\moved-from-local.log

同じアプローチを使用して、バケット間でオブジェクトを移動することもできます。

ls コマンドを使用してバケット内のアイテムを表示し、ファイルがそれに応じて移動されたことを確認することを忘れないでください。

6.4. オブジェクトを削除する

次に、 rm (削除)コマンドを使用してバケットからオブジェクトを削除する方法を見ていきます。

これは単純なコマンドであり、指定する必要があるのは、削除するオブジェクトの場所だけです。

$ aws s3 rm s3://linux-is-awesome/delete-me

また、CLIを介してコマンドを実行する場合は通常どおり、操作が正常に完了したことを確認します。

delete: s3://linux-is-awesome/delete-me

7. S3でウェブサイトをホストする

S3は単なるストレージではありません。 S3バケットを使用してウェブサイトをホストできるようにする独自のS3機能を使用できます。 この機能を有効にするには、特定の方法でバケットを構成する必要があります。 ウェブサイトコマンドを見てみましょう。

$ aws s3 website s3://linux-is-cool --index-document index.html --error-document error.html

websiteコマンドは、Webサイトのように動作するようにバケットを構成するようにS3に指示します。 2つの重要なパラメータも追加しました。index-documentは、サイトへの訪問者のデフォルトのランディングページとして使用するページをS3に指示するので重要ですが、error-documentはS3に指示します。デフォルトのエラーページとして機能するページ。 バケットの権限は自動的に処理されます。

S3でホストされるWebサイトのデフォルトのURLは、次の形式になります。

http://<bucket-name>.s3-website-<region>.amazonws.com

したがって、サンプルバケットlinux-is-coolus-east-1リージョンでホストされている場合、WebサイトのURLは次のようになります。

http://linux-is-cool.s3-website-us-east-1.amazonws.com

すべてが正しく構成されている場合、URLに移動すると、index.htmlファイルがロードされます。 この優れた機能はありますが、ウェブサイトをホストするための推奨される方法ではないことを覚えておいてください。 CloudFrontと呼ばれる別のAWSサービスをRoute53およびCertificateManagerと一緒に利用して、S3で安全なウェブサイトをホストします。

8. 結論

このチュートリアルでは、Amazon WebserviceのS3クラウドベースのストレージサービスを紹介し、それが提供するものについて簡単に説明しました。 バケットとそれらのバケットに格納されているオブジェクトの管理に役立つ一連の基本的なS3CLIコマンドを使用しました。

S3 CLIで可能なことのほんの一部に過ぎません。そのため、S3サービスで利用できるすべてのオプションの詳細については、S3開発者ガイドを確認してください。