Amazon Simple Storage Service
개발자 안내서 (API 버전 2006-03-01)

.NET용 AWS SDK를 사용하여 객체 가져오기

객체를 다운로드하면 모든 객체의 메타데이터와 콘텐츠를 읽기 위한 스트림을 가져오게 됩니다. Amazon S3에서 바로 데이터가 스트리밍되어 모든 데이터를 읽거나 입력 스트림을 닫을 때까지 네트워크 연결을 열어두어야 하므로 최대한 빨리 콘텐츠를 읽어야 합니다. 객체를 가져오려면 다음을 수행합니다.

  • 요청에 버킷 이름과 객체 키를 제공하여 getObject 메서드를 실행합니다.

  • GetObjectResponse 메서드 중 하나를 실행하여 스트림을 처리합니다.

다음은 사용할 수 있는 몇 가지 변형 형태입니다.

  • 전체 객체를 읽는 대신, 다음 C# 예제에서와 같이 요청에 바이트 범위를 지정하여 객체 데이터의 일부만 읽을 수 있습니다.

    GetObjectRequest request = new GetObjectRequest { BucketName = bucketName, Key = keyName, ByteRange = new ByteRange(0, 10) };
  • 객체를 검색할 때 필요할 경우 ResponseHeaderOverrides 객체를 사용하고 해당 요청 속성을 설정하여 필요할 경우 응답 헤더 값을 무시할 수 있습니다(객체 가져오기 참조). 다음 C# 코드 예제에서는 이를 수행하는 방법을 보여 줍니다. 예를 들어 이 기능을 사용하여 객체 키 이름과 다른 파일 이름을 가진 파일로 다운로드해야 할 객체를 지정할 수 있습니다.

    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 코드 예시 실행 단원을 참조하십시오.

// Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. // SPDX-License-Identifier: MIT-0 (For details, see https://github.com/awsdocs/amazon-s3-developer-guide/blob/master/LICENSE-SAMPLECODE.) using Amazon.S3; using Amazon.S3.Model; using System; using System.IO; using System.Threading.Tasks; namespace Amazon.DocSamples.S3 { class GetObjectTest { private const string bucketName = "*** bucket name ***"; private const string keyName = "*** object key ***"; // Specify your bucket region (an example region is shown). private static readonly RegionEndpoint bucketRegion = RegionEndpoint.USWest2; private static IAmazonS3 client; public static void Main() { client = new AmazonS3Client(bucketRegion); ReadObjectDataAsync().Wait(); } static async Task ReadObjectDataAsync() { string responseBody = ""; try { GetObjectRequest request = new GetObjectRequest { BucketName = bucketName, Key = keyName }; using (GetObjectResponse response = await client.GetObjectAsync(request)) using (Stream responseStream = response.ResponseStream) using (StreamReader reader = new StreamReader(responseStream)) { string title = response.Metadata["x-amz-meta-title"]; // Assume you have "title" as medata added to the object. string contentType = response.Headers["Content-Type"]; Console.WriteLine("Object metadata, Title: {0}", title); Console.WriteLine("Content type: {0}", contentType); responseBody = reader.ReadToEnd(); // Now you process the response body. } } catch (AmazonS3Exception e) { Console.WriteLine("Error encountered ***. Message:'{0}' when writing an object", e.Message); } catch (Exception e) { Console.WriteLine("Unknown encountered on server. Message:'{0}' when writing an object", e.Message); } } } }