S3 전송 유틸리티 사용 - AWS Mobile SDK

AWS Mobile SDK for Xamarin은 이제 AWS SDK for .NET에 포함됩니다. 이 안내서에서는 Xamarin용 모바일 SDK의 아카이브된 버전을 참조합니다.

S3 전송 유틸리티 사용

S3 Transfer Utility를 사용하면 보다 간편하게 S3와 Xamarin 애플리케이션 사이에서 파일을 업로드 및 다운로드할 수 있습니다.

TransferUtility 초기화

다음과 같이 S3 클라이언트를 생성하여 AWS 자격 증명 객체를 전달한 다음 S3 클라이언트를 TransferUtility로 전달합니다.

var s3Client = new AmazonS3Client(credentials,region); var transferUtility = new TransferUtility(s3Client);

(선택 사항) TransferUtility 구성

선택적 속성 3개를 구성할 수 있습니다.

  • ConcurrentServiceRequests - 파일 업로드/다운로드에 사용될 활성 스레드 또는 동시 비동기 웹 요청 수를 지정합니다. 기본값은 10입니다.

  • MinSizeBeforePartUpload - 업로드 파트의 최소 파트 크기(바이트)를 가져오거나 설정합니다. 기본값은 16MB입니다. 최소 파트 크기를 낮출 경우 멀티파트 업로드가 더 많은 수의 더 작은 파트로 분할됩니다. 이 값을 너무 낮게 설정하면 전송 속도에 악영향을 미쳐 지연 시간과 각 파트의 네트워크 통신이 증가합니다.

  • NumberOfUploadThreads - 실행 스레드 수를 가져오거나 설정합니다. 이 속성은 파일 업로드 시 사용될 활성 스레드 수를 지정합니다. 기본값은 10개 스레드입니다.

S3 TransferUtility 클라이언트를 구성하려면 다음과 같이 config 객체를 생성하고, 속성을 설정한 다음 객체를 TransferUtility 생성자로 전달합니다.

var config = new TransferUtilityConfig(); config.ConcurrentServiceRequests = 10; config.MinSizeBeforePartUpload=16*1024*1024; config.NumberOfUploadThreads=10; var s3Client = new AmazonS3Client(credentials); var utility = new TransferUtility(s3Client,config);

파일 다운로드

S3에서 파일을 다운로드하려면 Transfer Utility 객체에서 Download를 호출하여 다음 파라미터를 전달합니다.

  • file - 다운로드할 파일의 문자열 이름

  • bucketName - 다운로드할 파일이 저장된 S3 버킷의 문자열 이름

  • key - 다운로드할 S3 객체(이 경우에는 파일)의 이름을 표시하는 문자열

transferUtility.Download( Path.Combine(Environment.SpecialFolder.ApplicationData,"file"), "bucketName", "key" );

파일 업로드

S3로 파일을 업로드하려면 Transfer Utility 객체에서 Upload를 호출하여 다음 파라미터를 전달합니다.

  • file - 업로드할 파일의 문자열 이름

  • bucketName - 파일을 저장할 S3 버킷의 문자열 이름

transferUtility.Upload( Path.Combine(Environment.SpecialFolder.ApplicationData,"file"), "bucketName" );

위 코드는 Environment.SpecialFolder.ApplicationData 디렉터리에 파일이 있다고 가정합니다. 업로드는 처리량을 높이기 위해 대용량 파일에서 자동으로 S3의 멀티파트 업로드 기능을 사용합니다.