AWSの Mobile SDK for Xamarin が、AWS SDK for .NETに含まれるようになりました。このガイドでは、Mobile SDK for Xamarin のアーカイブバージョンについて説明します。
で AWS Mobile SDK for .NET and Xamarin を設定する
AWS Mobile SDK for .NET and Xamarin を設定して新しいプロジェクトの構築を開始するか、SDK を既存のプロジェクトに統合することができます。また、SDK の仕組みを確認するために、クローンを作成して、サンプル
前提条件
AWS Mobile SDK for .NET and Xamarin を使用するには、以下を行います。
前提条件を満たしたら、次の手順を行います。
-
Amazon Cognito を使用して AWS 認証情報を取得します。
-
アプリケーションで使用する各 AWS サービスに対して、必要なアクセス許可を設定します。
-
IDE で新しいプロジェクトを作成します。
-
AWS Mobile SDK for .NET and Xamarin をインストールします。
-
AWS Mobile SDK for .NET and Xamarin を設定します。
ステップ 1: AWS 認証情報を取得する
アプリケーションで AWS を呼び出すには、まず AWS 認証情報を取得する必要があります。このためには、アプリケーションにプライベートの AWS 認証情報を埋め込まずにアプリケーションから SDK のサービスにアクセスできる、Amazon Cognito、AWS のサービスを使用します。
Amazon Cognito の使用を開始するには、アイデンティティプールを作成する必要があります。ID プールは、アカウント固有の情報のストアであり、次のような一意のプール ID で識別されます。
"us-east-1:00000000-0000-0000-0000-000000000000"
-
Amazon Cognito コンソール
にサインインし、[フェデレーテッドアイデンティティの管理] を選択し、続いて [新しい ID プールの作成] を選択します。 -
ID プールの名前を入力し、認証されていない ID へのアクセスを有効にするチェックボックスをオンにします。[プールの作成] を選択して、ID プールを作成します。
-
[許可] を選択して、ID プールに関連付けられた 2 つのデフォルトロール (未認証ユーザー用と認証済みユーザー用) を作成します。これらのデフォルトのロールは、Amazon Cognito Sync および Amazon Mobile Analytics へのアイデンティティプールアクセスを提供します。
通常、アプリケーションごとに使用する ID プールは 1 つのみです。
ID プールを作成したら、AWS 認証情報を取得するために、次の手順で CognitoAWSCredentials
オブジェクト (ID プール ID に渡す) を作成し、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 より ユーザーに ID が割り当てられます。ステップ 1 で作成した ID プールは、AWS によって割り当てられた ID が保存される場所です。ID には、認証済みと未認証の 2 種類あります。認証済み ID は、パブリックログインプロバイダー (例: Facebook、Amazon、Google) によって認証されているユーザーに属します。未認証 ID はゲストユーザーに属します。
各 ID は、AWS Identity and Access Management ロールに関連付けられています。ステップ 1 では、2 種類の IAM ロール (認証済みユーザーと未認証ユーザー) を作成しました。IAM ロールには、1 つ以上のポリシーがアタッチされており、そのロールに割り当てられたアイデンティティでアクセスできる AWS のサービスを指定します。たとえば、次のサンプルポリシーは、Amazon S3 バケットへのアクセスを許可します。
{ "Statement": [ { "Action": [ "s3:AbortMultipartUpload", "s3:DeleteObject", "s3:GetObject", "s3:PutObject" ], "Effect": "Allow", "Resource": "arn:aws:s3:::MYBUCKETNAME/*", "Principal": "*" } ] }
アプリケーションで使用する AWS のサービスのアクセス許可を設定するには、ロールにアタッチされているポリシーを変更します。
-
IAM コンソール
に移動し、[ロール] を選択します。検索ボックスに ID プールの名前を入力します。設定する IAM ロールを選択します。認証済みユーザーと未認証ユーザーがいずれもアプリケーションにアクセスできるようにするには、両方のロールのアクセス許可を付与する必要があります。 -
[Attach Policy (ポリシーのアタッチ)] をクリック後、アタッチするポリシーを選択し、[Attach Policy (ポリシーのアタッチ)] をクリックします。作成した IAM ロールのデフォルトポリシーで、Amazon Cognito Sync および Mobile Analytics にアクセスできます。
ポリシーの作成方法や既存ポリシーのリストから選択する方法については、「IAM ポリシー」を参照してください。
ステップ 3: 新しい プロジェクトを作成する
Windows
Visual Studio を使用してアプリケーションを開発できます。
OS X
Visual Studio を使用して、アプリケーションを開発できます。Xamarin を使用して iOS 開発を行う場合は、アプリケーションを実行するために Mac にアクセスする必要があります。詳細については、「Windows への Xamarin.iOS のインストール
注記
JetBrains の クロスプラットフォーム商用 IDE Rider
ステップ 4。 AWS Mobile SDK for .NET and Xamarin をインストールする
Windows
オプション 1: Package Manager コンソールを使用してインストールする
The AWS Mobile SDK for .NET and Xamarin は、.NET アセンブリのセットで構成されています。AWS Mobile SDK for .NET and Xamarin をインストールするには、Package Manager コンソールで、install-package コマンドを各パッケージに対して実行します。たとえば、Cognito Identity をインストールするには、次のコマンドを実行します。
Install-Package AWSSDK.CognitoIdentity
AWS Core Runtime および Amazon Cognito アイデンティティパッケージは、すべてのプロジェクトにおいて必要です。各サービスのパッケージ名の完全なリストは、次のとおりです。
サービス | パッケージ名 |
---|---|
AWS Core Runtime |
AWSSDK.Core |
Amazon Cognito Sync |
AWSSDK.CognitoSync |
Amazon Cognito ID |
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 パッケージ
オプション 2: IDE を使用してインストールする
Visual Studio で、
-
プロジェクトを右クリックし、[Manage NuGet Packages] をクリックします。
-
プロジェクトに追加するパッケージ名を検索します。未公開の NuGet パッケージを含めるには、[Include Prelease] を選択します。AWS サービスパッケージの完全なリストは、「NuGet の AWS SDK パッケージ
」から確認できます。 -
パッケージを選択し、[Install] を選択します。
Mac (OS X)
Visual Studio で、
-
パッケージフォルダを右クリックし、[Add Packages] を選択します。
-
プロジェクトに追加するパッケージ名を検索します。未公開の NuGet パッケージを含めるには、[Show pre-release packages] を選択します。AWS サービスパッケージの完全なリストは、「NuGet の AWS SDK パッケージ
」から確認できます。 -
必要なパッケージの横にあるチェックボックスを選択し、[Add Package] を選択します。
重要
ポータブルクラスライブラリを使用して開発している場合は、ポータブルクラスライブラリから継承するすべてのプロジェクトにも AWSSDK.Core NuGet パッケージを追加する必要があります。
ステップ 5。 AWS Mobile SDK for .NET and Xamarin を設定する
ログ記録の設定
ログ記録を設定するには、Amazon.AWSConfigs
クラスと Amazon.Util.LoggingConfig
クラスを使用します。これらのクラスは、AWSSdk.Core
アセンブリで確認できます。Visual Studio の Nuget Package Manager から利用できます。OnCreate
メソッドのログ設定コードは、MainActivity.cs
ファイル (Android アプリ) または AppDelegate.cs
ファイル (iOS アプリ) に配置できます。また、ステートメント (using
Amazon
および using 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 ブログの「クロックスキューの修正
次のステップ
これで、AWS Mobile SDK for .NET and Xamarin が設定され、以下を行えるようになります。
-
使用を開始します。AWS Mobile SDK for .NET and Xamarin のサービスの使用方法および設定方法のクイックスタート手順については、AWS Mobile SDK for .NET and Xamarin の開始方法をお読み下さい。
-
サービストピックを表示します。AWS Mobile SDK for .NET and Xamarin の各サービスの詳細と機能について説明します。
-
デモを実行します。サンプルの Xamarin アプリケーション
を使用して、一般的ユースケースについて説明します。このサンプルアプリケーションを実行して、前述の AWS Mobile SDK for .NET and Xamarin を設定するには、各サンプルの README ファイルに記載された手順に従います。 -
API について説明します。|sdk-xamarin-ref|_ を表示します。
-
質問する: AWS Mobile SDK フォーラム
に質問を投稿するか、GitHub で問題を提起 してください。