Amazon EC2 インスタンスでの Amazon S3 の使用
Amazon Simple Storage Service (Amazon S3) は業界をリードするスケーラビリティ、データ可用性、セキュリティ、およびパフォーマンスを提供するオブジェクトストレージサービスです。Amazon S3 を使用して、データレイク、ウェブサイト、バックアップ、ビッグデータ分析など、さまざまなユースケースの任意の量のデータを Amazon EC2 インスタンスから、またはインターネット経由でどこからでも保存および取得できます。詳細については「Amazon S3 とは」を参照してください。
オブジェクトとはAmazon S3 に格納される基本エンティティです。Amazon S3 に格納されるすべてのオブジェクトはバケットに保管されます。バケットは Amazon S3 名前空間の最上位レベルを構成し、個々のストレージを所有するアカウントを識別します。Amazon S3 のバケットはインターネットのドメイン名に似ています。バケットに格納されたオブジェクトは一意のキー値を持ち、URL を使用して取得されます。例えば、キー値 (/photos/mygarden.jpg
) を持つオブジェクトが amzn-s3-demo-bucket1
バケットに格納されている場合、このオブジェクトは URL (https://amzn-s3-demo-bucket1.s3.amazonaws.com/photos/mygarden.jpg
) を使用してアドレス解決できます。詳細については「Amazon S3 の仕組み」を参照してください。
使用例
Amazon S3 にはストレージとしての利点があるため、場合によってはこのサービスを使用して、EC2 インスタンス用にファイルとデータセットを保存してもかまいません。Amazon S3 とインスタンスとの間でデータを移動するにはいくつかの方法があります。以下に説明する例以外にも、コンピュータやインスタンスから Amazon S3 のデータにアクセスできるさまざまなツールが、他のユーザーによって作成されています。
アクセス許可がある場合は以下の方法を使用して、Amazon S3 とインスタンスとの間でファイルをコピーできます。
- 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://amzn-s3-demo-bucket
.s3.amazonaws.com/path-to-file
- PowerShell
-
AWS Tools for Windows PowerShell を使用して、Amazon S3 との間でオブジェクトを移動できます。
次のように、Copy-S3Object コマンドレットを使用して、Amazon S3 オブジェクトを Windows インスタンスにコピーします。
Copy-S3Object `
-BucketName amzn-s3-demo-bucket
`
-Key path-to-file
`
-LocalFile my_copied_file.ext
あるいは、Windows インスタンスでウェブブラウザを使用して Amazon S3 コンソールを開くこともできます。
- AWS CLI
-
AWS Command Line Interface (AWS CLI) を使用して Amazon S3 から制限された項目をダウンロードし、項目をアップロードすることもできます。ツールのインストールおよび設定方法などの詳細についてはAWS Command Line Interface の詳細ページを参照してください。
aws s3 cp コマンドは Unix cp コマンドと似ています。ファイルを Amazon S3 からインスタンスにコピーしたり、ファイルをインスタンスから Amazon S3 にコピーしたりできるほか、ファイルを Amazon S3 の 1 つの場所から別の場所にコピーすることもできます。
オブジェクトを Amazon S3 からインスタンスにコピーするには次のコマンドを使用します。
aws s3 cp s3://amzn-s3-demo-bucket
/my_folder
/my_file.ext
my_copied_file.ext
オブジェクトをインスタンスから Amazon S3 にコピーして戻すには次のコマンドを使用します。
aws s3 cp my_copied_file.ext
s3://amzn-s3-demo-bucket
/my_folder
/my_file.ext
aws s3 sync コマンドを使用すると、Amazon S3 バケット全体をローカルディレクトリの場所に同期できます。この機能はデータセットをダウンロードし、リモートセットでローカルコピーを最新の状態に保つ際に役立ちます。Amazon S3 バケットに対して適切なアクセス許可がある場合はコマンドで送信元と送信先の場所を入れ替えることで、終了時にローカルディレクトリバックアップをクラウドにプッシュできます。
Amazon S3 バケット全体をインスタンスのローカルディレクトリにダウンロードするには次のコマンドを使用します。
aws s3 sync s3://amzn-s3-demo-source-bucket
local_directory
- Amazon S3 API
-
デベロッパーは API を使用して、Amazon S3 のデータにアクセスできます。この API はアプリケーションの開発および、他の API および SDK との統合に役立てることができます。詳細については「Amazon Simple Storage Service API リファレンス」の「 SDK を使用した Amazon S3 のコード例AWSSDKs」を参照してください。