.NET and Xamarin용 AWS Mobile SDK 설정 - AWS Mobile SDK

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

.NET and Xamarin용 AWS Mobile SDK 설정

.NET 및 Xamarin용 AWS Mobile SDK를 설정한 후 새 프로젝트를 빌드하거나 SDK를 기존 프로젝트에 통합할 수 있습니다. 또한 샘플을 복제하고 실행하여 SDK가 어떻게 작동하는지 엿볼 수도 있습니다. 다음 단계에 따라 .NET 및 Xamarin용 AWS Mobile SDK를 설정하고 사용을 시작하세요.

필수 조건

.NET and Xamarin용 AWS Mobile SDK and Xamarin을 사용하려면 먼저 다음 작업을 수행해야 합니다.

사전 조건을 모두 충족한 후:

  1. Amazon Cognito를 사용하여 AWS 자격 증명을 받습니다.

  2. 애플리케이션에서 사용할 각 AWS 서비스에 필요한 권한을 설정합니다.

  3. IDE에서 새 프로젝트를 생성합니다.

  4. .NET 및 Xamarin용 AWS Mobile SDK를 설치합니다.

  5. .NET 및 Xamarin용 AWS Mobile SDK을 구성합니다.

1단계: AWS 자격 증명 얻기

애플리케이션에서 AWS를 호출하려면 먼저 AWS 자격 증명을 얻어야 합니다. 이렇게 하려면 애플리케이션에 프라이빗 AWS 자격 증명을 포함하지 않고도 애플리케이션이 SDK에서 서비스에 액세스할 수 있도록 하는 AWS 서비스인 Amazon Cognito를 사용합니다.

Amazon Cognito를 시작하려면 자격 증명 풀을 생성해야 합니다. 자격 증명 풀은 다음과 같은 고유한 자격 증명 풀 ID로 식별되는 계정에 고유한 정보의 스토어입니다.

"us-east-1:00000000-0000-0000-0000-000000000000"
  1. Amazon Cognito 콘솔에 로그인하고 연동 자격 증명 관리새 자격 증명 풀 생성을 차례대로 선택합니다.

  2. 자격 증명 풀의 이름을 입력하고 확인란을 선택하여 인증되지 않은 자격 증명에 대해 액세스를 활성화합니다. 풀 생성을 선택하여 자격 증명 풀을 생성합니다.

  3. 허용을 선택하여 자격 증명 풀과 연결된 기본 역할 두 개(인증되지 않은 사용자의 역할 하나, 인증된 사용자의 역할 하나)를 생성합니다. 이 기본 역할은 Amazon Cognito Sync 및 Amazon Mobile Analytics에 대한 자격 증명 풀 액세스를 제공합니다.

일반적으로 애플리케이션당 하나의 자격 증명 풀만 사용합니다.

자격 증명 풀을 생성한 후 다음과 같이 CognitoAWSCredentials 객체를 생성(자격 증명 풀 ID를 전달)하고 AWS 클라이언트의 생성자에 전달하여 AWS 자격 증명을 얻습니다.

CognitoAWSCredentials credentials = new CognitoAWSCredentials ( "us-east-1:00000000-0000-0000-0000-000000000000", // Your identity pool ID RegionEndpoint.USEast1 // Region ); // Example for |MA| analyticsManager = MobileAnalyticsManager.GetOrCreateInstance( credentials, RegionEndpoint.USEast1, // Region APP_ID // app id );

2단계: 권한 설정

애플리케이션에서 사용하려는 모든 AWS 서비스에 필요한 권한을 설정해야 합니다. 먼저 어떻게 AWS가 애플리케이션의 사용자를 보는지 이해해야 합니다.

누군가 애플리케이션을 사용하고 AWS를 호출하면 AWS는 해당 사용자에게 자격 증명을 할당합니다. 1단계에서 생성한 자격 증명 풀이 AWS가 이러한 자격 증명을 저장하는 위치입니다. 자격 증명에는 두 가지 유형, 즉 인증된 자격 증명과 인증되지 않은 자격 증명이 있습니다. 인증된 자격 증명은 퍼블릭 로그인 공급자(예: Facebook, Amazon, Google)에 의해 인증된 사용자를 위한 것이고, 인증되지 않은 자격 증명은 게스트 사용자를 위한 것입니다.

모든 자격 증명은 AWS Identity and Access Management 역할과 연결되어 있습니다. 1단계에서 인증된 사용자와 인증되지 않은 사용자에 대해 각각 IAM 역할을 하나씩 총 두 개 생성했습니다. 모든 IAM 역할에는 해당 역할에 할당된 자격 증명이 액세스할 수 있는 AWS 서비스를 지정하는 정책이 하나 이상 연결되어 있습니다. 예를 들어 다음 샘플 정책은 Amazon S3 버킷에 대한 액세스 권한을 부여합니다.

{ "Statement": [ { "Action": [ "s3:AbortMultipartUpload", "s3:DeleteObject", "s3:GetObject", "s3:PutObject" ], "Effect": "Allow", "Resource": "arn:aws:s3:::MYBUCKETNAME/*", "Principal": "*" } ] }

애플리케이션에서 사용하려는 AWS 서비스에 대한 권한을 설정하려면 역할에 연결된 정책을 수정합니다.

  1. IAM 콘솔로 이동하여 역할을 선택합니다. 검색 상자에 자격 증명 풀 이름을 입력합니다. 구성할 IAM 역할을 선택합니다. 애플리케이션이 인증된 사용자와 인증되지 않은 사용자를 모두 허용할 경우 두 역할 모두에 권한을 부여해야 합니다.

  2. 정책 연결을 클릭하고 원하는 정책을 선택한 다음 정책 연결을 클릭합니다. 앞서 생성한 IAM 역할의 기본 정책은 Amazon Cognito Sync 및 Mobile Analytics에 대한 액세스 권한을 부여합니다.

정책 생성 또는 기존 정책 목록에서 정책 선택에 대한 자세한 내용은 IAM 정책을 참조하세요.

3단계: 새 프로젝트 생성

Windows

Visual Studio를 사용하여 애플리케이션을 개발할 수 있습니다.

OS X

Visual Studio를 사용하여 애플리케이션을 개발할 수 있습니다. Xamarin을 이용한 iOS 개발에서는 앱을 실행하기 위한 Mac 액세스 권한이 있어야 합니다. 자세한 내용은 Windows에 Xamarin.iOS 설치를 참조하세요.

참고

JetBrains의 크로스 플랫폼 상용 IDE Rider에는 Windows 및 Mac 플랫폼 모두에서 Xamarin이 지원됩니다.

4단계: .NET and Xamarin용 AWS Mobile SDK 설치

Windows

옵션 1: Package Manager 콘솔을 사용하여 설치

.NET 및 Xamarin용 AWS Mobile SDK는 일련의 .NET 어셈블리로 구성되어 있습니다. .NET 및 Xamarin용 AWS Mobile SDK를 설치하려면 Package Manager 콘솔에서 각 패키지에 대해 install-package 명령을 실행해야 합니다. 예를 들어 Cognito Identity를 설치하려면 다음을 실행합니다.

Install-Package AWSSDK.CognitoIdentity

AWS Core Runtime 및 Amazon Cognito Identity 패키지는 모든 프로젝트에 필요합니다. 다음은 각 서비스용 패키지 이름의 전체 목록입니다.

서비스 패키지 이름

AWS Core Runtime

AWSSDK.Core

Amazon Cognito Sync

AWSSDK.CognitoSync

Amazon Cognito 자격 증명

AWSSDK.CognitoIdentity

Amazon DynamoDB

AWSSDK.DynamoDBv2

Amazon Mobile Analytics

AWSSDK.MobileAnalytics

Amazon S3

AWSSDK.S3

Amazon SNS

AWSSDK.SimpleNotificationService

프리뷰 버전 패키지를 포함하려면 패키지를 설치하는 동안 다음과 같이 -Pre 명령줄 인수를 삽입합니다.

Install-Package AWSSDK.CognitoSync -Pre

AWS 서비스 패키지의 전체 목록은 NuGet의 AWS SDK 패키지 또는 .NET용 AWS SDK GitHub 리포지토리에서 확인할 수 있습니다.

옵션 2: IDE를 사용하여 설치

Visual Studio

  1. 프로젝트를 마우스 오른쪽 버튼으로 클릭하고 Manage NuGet Packages(NuGet 패키지 관리)를 클릭합니다.

  2. 프로젝트에 추가하려는 패키지 이름을 검색합니다. 프리뷰 버전 NuGet 패키지를 포함하려면 Include Prelease(프리뷰 포함)를 선택합니다. AWS 서비스 패키지의 전체 목록은 AWS SDK packages on NuGet에서 확인할 수 있습니다.

  3. 패키지를 선택하고 Install(설치)을 선택합니다.

Mac(OS X)

Visual Studio

  1. 패키지 폴더를 마우스 오른쪽 버튼으로 클릭하고 패키지 추가를 선택합니다.

  2. 프로젝트에 추가하려는 패키지 이름을 검색합니다. 프리뷰 버전 NuGet 패키지를 포함하려면 Show pre-release packages(프리뷰 패키지 표시)를 선택합니다. AWS 서비스 패키지의 전체 목록은 AWS SDK packages on NuGet에서 확인할 수 있습니다.

  3. 원하는 패키지 옆의 확인란을 선택하고 패키지 추가를 선택합니다.

중요

Portable Class Library를 사용하여 개발하는 경우 Portable Class Library에서 파생되는 모든 프로젝트에도 AWSSDK.Core NuGet 패키지를 추가해야 합니다.

5단계: .NET and Xamarin용 AWS Mobile SDK 구성

로깅 설정

Amazon.AWSConfigs 클래스 및 Amazon.Util.LoggingConfig 클래스를 사용하여 로깅 설정을 지정합니다. 이러한 클래스는 Visual Studio에서 Nuget Package Manager를 통해 사용할 수 있는 AWSSdk.Core 어셈블리에 포함되어 있습니다. 로깅 설정 코드는 OnCreate 파일(Android 앱의 경우) 또는 MainActivity.cs 파일(iOS 앱의 경우)의 AppDelegate.cs 메서드에 배치할 수 있습니다. using Amazonusing Amazon.Util 문도 .cs 파일에 추가할 수 있습니다.

다음과 같이 로깅 설정을 구성합니다.

var loggingConfig = AWSConfigs.LoggingConfig; loggingConfig.LogMetrics = true; loggingConfig.LogResponses = ResponseLoggingOption.Always; loggingConfig.LogMetricsFormat = LogMetricsFormatOption.JSON; loggingConfig.LogTo = LoggingOptions.SystemDiagnostics;

SystemDiagnostics에 로깅할 때 프레임워크가 내부적으로 System.Console에 출력합니다. HTTP 응답을 로깅하려면 LogResponses 플래그를 설정합니다. 값은 Always, Never 또는 OnError가 될 수 있습니다.

또한 LogMetrics 속성을 사용하여 HTTP 요청에 대한 성능 지표를 로깅할 수도 있습니다. 로그 형식은 LogMetricsFormat 속성을 사용하여 지정할 수 있습니다. 유효한 값은 JSON 또는 표준입니다.

리전 엔드포인트 설정

다음과 같이 모든 서비스 클라이언트의 기본 리전을 구성합니다.

AWSConfigs.AWSRegion="us-east-1";

그러면 SDK 내 모든 서비스 클라이언트에 대해 기본 리전이 설정됩니다. 다음과 같이 서비스 클라이언트의 인스턴스를 생성할 때 명시적으로 리전을 지정하여 이 설정을 재정의할 수 있습니다.

IAmazonS3 s3Client = new AmazonS3Client(credentials,RegionEndpoint.USEast1);

HTTP 프록시 설정 구성

네트워크가 프록시를 사용하는 경우 다음과 같이 HTTP 요청에 대한 프록시 설정을 구성할 수 있습니다.

var proxyConfig = AWSConfigs.ProxyConfig; proxyConfig.Host = "localhost"; proxyConfig.Port = 80; proxyConfig.Username = "<username>"; proxyConfig.Password = "<password>";

클럭 스큐 보상

이 속성은 SDK가 정확한 서버 시간을 측정하고 올바른 시간으로 요청을 재발행하여 클라이언트 클럭 스큐를 보상해야 하는지 여부를 결정합니다.

AWSConfigs.CorrectForClockSkew = true;

서비스 호출에서 예외가 발생하고 SDK가 로컬 시간과 서버 시간 간 차이를 확인할 경우 이 필드가 설정됩니다.

var offset = AWSConfigs.ClockOffset;

클럭 스큐에 대한 자세한 내용은 AWS 블로그에서 Clock-skew Correction을 참조하세요.

다음 단계

.NET and Xamarin용 AWS Mobile SDK 설정 완료 후 다음을 수행할 수 있습니다.