メニュー
Amazon Simple Storage Service
開発者ガイド (API Version 2006-03-01)

AWS SDK for .NET を使用したオブジェクトの取得

以下のタスクは、.NET クラスを使用して、1 つのオブジェクトまたはオブジェクトの部分を取得し、ローカルのファイルに保存する方法を示しています。

オブジェクトのダウンロード

1

AmazonS3 クラスのインスタンスを作成します。

2

AmazonS3.GetObject メソッドのいずれかを実行します。バケット名、ファイルパス、ストリームなどの情報を提供する必要があります。この情報は、GetObjectRequest クラスのインスタンスを作成することによって指定します。

3

いずれかの GetObjectResponse.WriteResponseStreamToFile メソッドを実行して、ストリームをファイルに保存します。

以下の C# コード例は、前述のタスクの例です。この例では、オブジェクトをデスクトップ上のファイルに保存します。

Copy
static IAmazonS3 client; using (client = new AmazonS3Client(Amazon.RegionEndpoint.USEast1)) { GetObjectRequest request = new GetObjectRequest { BucketName = bucketName, Key = keyName }; using (GetObjectResponse response = client.GetObject(request)) { string dest = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Desktop), keyName); if (!File.Exists(dest)) { response.WriteResponseStreamToFile(dest); } } }

オブジェクト全体を読み取る代わりに、オブジェクトデータの一部だけを読み取るには、次の C# コード例に示すとおり、リクエスト内でバイト範囲を指定します。

Copy
GetObjectRequest request = new GetObjectRequest { BucketName = bucketName, Key = keyName, ByteRange = new ByteRange(0, 10) };

オブジェクトを取得するときは、オプションでレスポンスヘッダーの値を上書きすることもできます (「オブジェクトの取得」を参照)。その場合は、次の C# コード例に示すとおり、ResponseHeaderOverrides オブジェクトを使用して、対応するリクエストプロパティを設定します。この機能を使用すると、オブジェクトを、オブジェクトキー名でなく他のファイル名でダウンロードするよう指定することができます。

Copy
GetObjectRequest request = new GetObjectRequest { BucketName = bucketName, Key = keyName }; ResponseHeaderOverrides responseHeaders = new ResponseHeaderOverrides(); responseHeaders.CacheControl = "No-cache"; responseHeaders.ContentDisposition = "attachment; filename=testing.txt"; request.ResponseHeaderOverrides = responseHeaders;

次の C# コード例では、Amazon S3 バケットからオブジェクトを取得します。この例では、GetObjectResponse.ResponseStream プロパティを使用してレスポンスからオブジェクトデータを読み取っています。この例はまた、GetObjectResponse.Metadata コレクションを使用してオブジェクトのメタデータを読み取る方法も示しています。取得するオブジェクトに x-amz-meta-title 値がある場合は、コードがそのメタデータ値を出力します。

作業サンプルを作成およびテストする方法については、「Amazon S3 .NET コード例の実行」を参照してください。

Copy
using System; using System.IO; using Amazon.S3; using Amazon.S3.Model; namespace s3.amazon.com.docsamples { class GetObject { static string bucketName = "*** bucket name ***"; static string keyName = "*** object key ***"; static IAmazonS3 client; public static void Main(string[] args) { try { Console.WriteLine("Retrieving (GET) an object"); string data = ReadObjectData(); } catch (AmazonS3Exception s3Exception) { Console.WriteLine(s3Exception.Message, s3Exception.InnerException); } Console.WriteLine("Press any key to continue..."); Console.ReadKey(); } static string ReadObjectData() { string responseBody = ""; using (client = new AmazonS3Client(Amazon.RegionEndpoint.USEast1)) { GetObjectRequest request = new GetObjectRequest { BucketName = bucketName, Key = keyName }; using (GetObjectResponse response = client.GetObject(request)) using (Stream responseStream = response.ResponseStream) using (StreamReader reader = new StreamReader(responseStream)) { string title = response.Metadata["x-amz-meta-title"]; Console.WriteLine("The object's title is {0}", title); responseBody = reader.ReadToEnd(); } } return responseBody; } } }