Amazon S3를 사용한 파일 저장 및 검색 - AWS Mobile SDK

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

Amazon S3를 사용한 파일 저장 및 검색

Amazon Simple Storage Service(Amazon S3)는 모바일 개발자에 안전하고 내구성과 확장성이 뛰어난 객체 스토리지를 제공합니다. Amazon S3는 간단한 웹 서비스 인터페이스를 통해 웹 어디서나 원하는 양의 데이터를 저장 및 검색할 수 있으므로 사용하기가 쉽습니다.

다음 자습서에서는 S3를 사용하기 위한 상위 수준 유틸리티인 S3 TransferUtility를 앱에 통합하는 방법을 설명합니다. Xamarin 애플리케이션에서 S3을 사용하는 방법에 대한 자세한 내용은 Amazon Simple Storage Service(S3)를 참조하세요.

프로젝트 설정

필수 조건

이 자습서를 시작하기 전에 .NET 및 Xamarin용 AWS Mobile SDK 설정의 지침을 모두 완료해야 합니다.

또한 이 자습서에서는 이미 S3 버킷을 생성한 것으로 가정합니다. S3 버킷을 생성하려면 S3 AWS 콘솔로 이동하세요.

S3에 대한 권한 설정

기본 IAM 역할 정책은 애플리케이션에 Amazon Mobile Analytics 및 Amazon Cognito Sync에 대한 액세스 권한을 부여합니다. Cognito 자격 증명 풀이 Amazon S3에 액세스할 수 있으려면 자격 증명 풀의 역할을 수정해야 합니다.

  1. Identity and Access Management 콘솔로 이동하여 왼쪽 창에서 역할을 클릭합니다.

  2. 검색 상자에 자격 증명 풀 이름을 입력합니다. 인증된 사용자와 인증되지 않은 사용자에 대해 하나씩 2개의 역할이 나열됩니다.

  3. 인증되지 않은 사용자의 역할을 클릭합니다(자격 증명 풀 이름에 unauth가 추가됨).

  4. Create Role Policy(역할 정책 생성)를 클릭하고 정책 생성기를 선택한 다음 선택을 클릭합니다.

  5. Edit Permissions(권한 편집) 페이지에서 다음 이미지에 표시된 설정을 입력합니다. Amazon 리소스 이름(ARN)은 사용자의 것으로 바꿔야 합니다. S3 버킷의 ARN은 arn:aws:s3:::examplebucket/*과 비슷하며, 버킷이 위치하는 리전과 버킷의 이름으로 구성됩니다. 아래 표시된 설정은 자격 증명 풀에 지정된 버킷의 모든 작업에 대한 전체 액세스를 부여합니다.

  1. 설명문 추가 버튼을 클릭한 다음 다음 단계를 클릭합니다.

  2. 마법사가 앞서 생성한 구성을 표시합니다. 정책 적용을 클릭합니다.

S3 액세스 권한 부여에 대한 자세한 내용은 Amazon S3 버킷에 대한 액세스 권한 부여를 참조하세요.

프로젝트에 S3용 NuGet 패키지 추가

.NET 및 Xamarin용 AWS Mobile SDK 설정 내 지침의 4단계를 따라 S3 NuGet 패키지를 프로젝트에 추가합니다.

(선택 사항) S3 요청의 서명 버전을 구성합니다.

Amazon S3와의 모든 상호 작용은 인증을 거치거나 익명으로 할 수 있습니다. AWS는 서명 버전 4 또는 서명 버전 2 알고리즘을 사용해 서비스 호출을 인증합니다.

2014년 1월 이후 생성된 모든 새 AWS 리전은 서명 버전 4만 지원합니다. 하지만 그 이전의 리전은 계속해서 서명 버전 4 및 서명 버전 2 요청을 지원합니다.

버킷이 이 페이지에 나열된 서명 버전 2 요청을 지원하지 않는 리전에 위치하는 경우 다음과 같이 AWSConfigsS3.UseSignatureVersion4 속성을 "true"로 설정해야 합니다.

AWSConfigsS3.UseSignatureVersion4 = true;

AWS 서명 버전에 대한 자세한 내용은 요청 인증(AWS 서명 버전 4)을 참조하세요.

S3 TransferUtility 클라이언트 초기화

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

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

Amazon S3로 파일 업로드

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

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

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

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

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

Amazon S3에서 파일 다운로드

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

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

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

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

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

Xamarin 애플리케이션에서 Amazon S3에 액세스하는 방법에 대한 자세한 내용은 Amazon Simple Storage Service(S3)를 참조하세요.