Amazon EC2 での Amazon S3 の使用 - Amazon Elastic Compute Cloud

Amazon EC2 での Amazon S3 の使用

Amazon S3 は、インターネットデータ用のリポジトリです。Amazon S3 により、低コストで信頼性に優れ、高速なデータストレージインフラストラクチャにアクセスできます。ウェブスケールのコンピューティングをさらに簡単に行えるように設計されており、Amazon EC2 内から、またはウェブ上のどこからでも、いつでも必要な量だけデータを格納および取得できます。Amazon S3 では、複数の施設にまたがる複数のデバイスにデータオブジェクトが冗長的に格納されるので、多数のさまざまなクライアントやアプリケーションスレッドからデータオブジェクトに対する読み込み/書き込みの同時アクセスが可能になります。Amazon S3 に格納された冗長データを使用すれば、インスタンスまたはアプリケーションの障害から迅速かつ確実に復旧できます。

Amazon EC2 は Amazon マシンイメージ (AMI) を格納するために Amazon S3 を使用します。AMI は EC2 インスタンスを起動するために使用します。インスタンスに障害が発生した場合は、格納済みの AMI を使用して別のインスタンスを即座に起動できるので、高速復旧と事業継続が可能になります。

Amazon EC2 はデータボリュームのスナップショット (バックアップコピー) の格納にも Amazon S3 を使用します。アプリケーションまたはシステムで障害が発生した場合、スナップショットを使用すれば、データをすばやく確実に回復できます。またスナップショットは、複数の新しいデータボリュームの作成、既存のデータボリュームのサイズ拡張、アベイラビリティーゾーン間でのデータボリュームの移動を行うためのベースラインとして使用することもできます。このような機能により、データの使い方を大幅に拡張できます。データボリュームとスナップショットの使用については、「Amazon Elastic Block Store」を参照してください。

オブジェクトとは、Amazon S3 に格納される基本エンティティです。Amazon S3 に格納されるすべてのオブジェクトは、バケットに保管されます。バケットは Amazon S3 名前空間の最上位レベルを構成し、個々のストレージを所有するアカウントを識別します。Amazon S3 のバケットはインターネットのドメイン名に似ています。バケットに格納されたオブジェクトは一意のキー値を持ち、URL を使用して取得されます。例えば、キー値 (/photos/mygarden.jpg) を持つオブジェクトが DOC-EXAMPLE-BUCKET1 バケットに格納されている場合、このオブジェクトは URL (https://DOC-EXAMPLE-BUCKET1.s3.amazonaws.com/photos/mygarden.jpg) を使用してアドレス解決できます。

Amazon S3 の機能の詳細については、「Amazon S3 の製品ページ」を参照してください。

使用例

Amazon S3 にはストレージとしての利点があるため、場合によっては、このサービスを使用して、EC2 インスタンス用にファイルとデータセットを保存してもかまいません。Amazon S3 とインスタンスとの間でデータを移動するには、いくつかの方法があります。以下に説明する例以外にも、コンピュータやインスタンスから Amazon S3 のデータにアクセスできるさまざまなツールが、他のユーザーによって作成されています。一般的な一部のツールについては、AWS フォーラムで取り上げられています。

アクセス許可がある場合は、以下の方法を使用して、Amazon S3 とインスタンスとの間でファイルをコピーできます。

GET または wget

注記

この手法は、パブリックなオブジェクトに対してのみ有効です。オブジェクトがパブリックでない場合は、ERROR 403: Forbidden メッセージが出力されます。このエラーを受け取った場合は、Amazon S3 コンソール、AWS CLI、AWS API、AWS SDK、または AWS Tools for Windows PowerShell を使用する必要があります。この際は、適切なアクセス許可が必要です。詳細については、Amazon S3 ユーザーガイドの「Amazon S3 での Identity and Access Management」および「オブジェクトのダウンロード」を参照してください。

wget ユーティリティは、Amazon S3 からパブリックオブジェクトをダウンロードできる HTTP および FTP のクライアントです。これは、Amazon Linux やその他のほとんどのディストリビューションにデフォルトでインストールされ、Windows ではダウンロード可能です。Amazon S3 オブジェクトをダウンロードするには、次のコマンドを入力し、ダウンロードするオブジェクトの URL に置き換えます。

[ec2-user ~]$ wget https://my_bucket.s3.amazonaws.com/path-to-file
AWS Command Line Interface

AWS Command Line Interface (AWS CLI) は、AWS サービスを管理するための統合ツールです。AWS CLI を使用すると、ユーザーは自分自身を認証し、限定された項目を Simple Storage Service (Amazon S3) からダウンロードしたり、項目をアップロードしたりできます。ツールのインストールおよび設定方法などの詳細については、「AWS Command Line Interface の詳細ページ」を参照してください。

aws s3 cp コマンドは、Unix cp コマンドと似ています。ファイルを Amazon S3 からインスタンスにコピーしたり、ファイルをインスタンスから Amazon S3 にコピーしたりできるほか、ファイルを Amazon S3 の 1 つの場所から別の場所にコピーすることもできます。

オブジェクトを Amazon S3 からインスタンスにコピーするには、次のコマンドを使用します。

[ec2-user ~]$ aws s3 cp s3://my_bucket/my_folder/my_file.ext my_copied_file.ext

オブジェクトをインスタンスから Amazon S3 にコピーして戻すには、次のコマンドを使用します。

[ec2-user ~]$ aws s3 cp my_copied_file.ext s3://my_bucket/my_folder/my_file.ext

aws s3 sync コマンドは、Amazon S3 バケット全体をローカルディレクトリの場所に同期できます。この機能は、データセットをダウンロードし、リモートセットでローカルコピーを最新の状態に保つ際に役立ちます。Amazon S3 バケットに対して適切なアクセス許可がある場合は、コマンドで送信元と送信先の場所を入れ替えることで、終了時にローカルディレクトリバックアップをクラウドにプッシュできます。

Amazon S3 バケット全体をインスタンスのローカルディレクトリにダウンロードするには、次のコマンドを使用します。

[ec2-user ~]$ aws s3 sync s3://remote_S3_bucket local_directory
Amazon S3 API

デベロッパーは API を使用して、Amazon S3 のデータにアクセスできます。詳細については、Amazon Simple Storage Serviceユーザーガイドを参照してください。この API およびその例を使用すると、アプリケーションを開発し、boto Python インターフェイスなどのその他の API および SDK と統合するのに役立ちます。