

 AWS Mobile SDK for Xamarin が に含まれるようになりました AWS SDK for .NET。このガイドでは、Mobile SDK for Xamarin のアーカイブバージョンについて説明します。

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# で AWS Mobile SDK for .NET and Xamarin を設定する
<a name="setup"></a>

AWS Mobile SDK for .NET and Xamarin を設定して新しいプロジェクトの構築を開始するか、SDK を既存のプロジェクトに統合することができます。また、SDK の仕組みを確認するために、クローンを作成して、[サンプル](https://github.com/awslabs/aws-sdk-net-samples/tree/master/XamarinSamples)を実行することもできます。AWS Mobile SDK for .NET and Xamarin を設定して使用を開始するには、次のステップに従います。

## 前提条件
<a name="prerequisites"></a>

AWS Mobile SDK for .NET and Xamarin を使用するには、以下を行います。
+ [AWS アカウント](https://aws.amazon.com/)を作成します。
+ [Xamarin](https://docs.microsoft.com/en-us/xamarin/get-started/installation/?pivots=windows) をインストールします。

前提条件を満たしたら、次の手順を行います。

1. Amazon Cognito を使用して AWS 認証情報を取得します。

1. アプリケーションで使用する各 AWS サービスに対して、必要なアクセス許可を設定します。

1. IDE で新しいプロジェクトを作成します。

1. AWS Mobile SDK for .NET and Xamarin をインストールします。

1. AWS Mobile SDK for .NET and Xamarin を設定します。

## ステップ 1: AWS 認証情報を取得する
<a name="step-1-obtain-aws-credentials"></a>

アプリケーションで AWS を呼び出すには、まず AWS 認証情報を取得する必要があります。このためには、アプリケーションにプライベートの AWS 認証情報を埋め込まずにアプリケーションから SDK のサービスにアクセスできる、Amazon Cognito、AWS のサービスを使用します。

Amazon Cognito の使用を開始するには、アイデンティティプールを作成する必要があります。ID プールは、アカウント固有の情報のストアであり、次のような一意のプール ID で識別されます。

```
"us-east-1:00000000-0000-0000-0000-000000000000"
```

1. [Amazon Cognito コンソール](https://console.aws.amazon.com/cognito/home)にサインインし、[**フェデレーテッドアイデンティティの管理**] を選択し、続いて [**新しい ID プールの作成**] を選択します。

1. ID プールの名前を入力し、認証されていない ID へのアクセスを有効にするチェックボックスをオンにします。[**プールの作成**] を選択して、ID プールを作成します。

1. [**許可**] を選択して、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: アクセス許可の設定
<a name="step-2-set-permissions"></a>

アプリケーションで使用する 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 のサービスのアクセス許可を設定するには、ロールにアタッチされているポリシーを変更します。

1. [IAM コンソール](https://console.aws.amazon.com/iam/home)に移動し、[ロール] を選択します。検索ボックスに ID プールの名前を入力します。設定する IAM ロールを選択します。認証済みユーザーと未認証ユーザーがいずれもアプリケーションにアクセスできるようにするには、両方のロールのアクセス許可を付与する必要があります。

1. [**Attach Policy (ポリシーのアタッチ)**] をクリック後、アタッチするポリシーを選択し、[**Attach Policy (ポリシーのアタッチ)**] をクリックします。作成した IAM ロールのデフォルトポリシーで、Amazon Cognito Sync および Mobile Analytics にアクセスできます。

ポリシーの作成方法や既存ポリシーのリストから選択する方法については、「[IAM ポリシー](https://docs.aws.amazon.com/IAM/latest/UserGuide/PoliciesOverview.html)」を参照してください。

## ステップ 3: 新しい プロジェクトを作成する
<a name="step-3-create-a-new-project"></a>

### Server
<a name="windows"></a>

Visual Studio を使用してアプリケーションを開発できます。

### OS X
<a name="os-x"></a>

Visual Studio を使用して、アプリケーションを開発できます。Xamarin を使用して iOS 開発を行う場合は、アプリケーションを実行するために Mac にアクセスする必要があります。詳細については、「[Windows への Xamarin.iOS のインストール](https://docs.microsoft.com/en-us/xamarin/ios/get-started/installation/windows/?pivots=windows)」を参照してください。

**注記**  
JetBrains の クロスプラットフォーム商用 IDE [Rider](https://www.jetbrains.com/help/rider/Xamarin.html) には、Windows および Mac プラットフォームの両方で、Xamarin Support が含まれています。

## ステップ 4。 AWS Mobile SDK for .NET and Xamarin をインストールする
<a name="step-4-install-the-sdk-xamarin"></a>

### Server
<a name="id1"></a>

#### オプション 1: Package Manager コンソールを使用してインストールする
<a name="option-1-install-by-using-the-package-manager-console"></a>

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 パッケージ](https://www.nuget.org/packages?q=+aws-sdk-v3)または [AWS SDK for .NET Github リポジトリ](https://github.com/aws/aws-sdk-net#nuget-packages)で確認できます。

#### オプション 2: IDE を使用してインストールする
<a name="option-2-install-by-using-your-ide"></a>

 **Visual Studio** で、

1. プロジェクトを右クリックし、[**Manage NuGet Packages**] をクリックします。

1. プロジェクトに追加するパッケージ名を検索します。未公開の NuGet パッケージを含めるには、[**Include Prelease**] を選択します。AWS サービスパッケージの完全なリストは、「[NuGet の AWS SDK パッケージ](https://www.nuget.org/packages?q=+aws-sdk-v3)」から確認できます。

1. パッケージを選択し、[**Install**] を選択します。

### Mac (OS X)
<a name="mac-os-x"></a>

 **Visual Studio** で、

1. パッケージフォルダを右クリックし、[**Add Packages**] を選択します。

1. プロジェクトに追加するパッケージ名を検索します。未公開の NuGet パッケージを含めるには、[**Show pre-release packages**] を選択します。AWS サービスパッケージの完全なリストは、「[NuGet の AWS SDK パッケージ](https://www.nuget.org/packages?q=+aws-sdk-v3)」から確認できます。

1. 必要なパッケージの横にあるチェックボックスを選択し、[**Add Package**] を選択します。

**重要**  
ポータブルクラスライブラリを使用して開発している場合は、ポータブルクラスライブラリから継承するすべてのプロジェクトにも AWSSDK.Core NuGet パッケージを追加する必要があります。

## ステップ 5。 AWS Mobile SDK for .NET and Xamarin を設定する
<a name="step-5-configure-the-sdk-xamarin"></a>

### ログ記録の設定
<a name="set-logging"></a>

ログ記録を設定するには、`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 またはスタンダードです。

### リージョンのエンドポイントを設定する
<a name="set-the-region-endpoint"></a>

次のように、すべてのサービスクライアントのデフォルトのリージョンを設定します。

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

これにより、SDK のすべてのサービスクライアントのデフォルトのリージョンが設定されます。この設定は、次の通り、サービスクライアントのインスタンス作成時に、リージョンを明示的に指定して上書きできます。

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

### HTTP プロキシ設定を設定する
<a name="configure-the-http-proxy-settings"></a>

ネットワークがプロキシの背後にある場合は、次のように HTTP リクエストのプロキシ設定を構成できます。

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

### クロックスキューの修正
<a name="correct-for-clock-skew"></a>

このプロパティでは、適切なサーバー時間を特定して、正しい時間でリクエストを再び発行することで、SDK でクライアントクロックを修正する必要があるかどうかを判断します。

```
AWSConfigs.CorrectForClockSkew = true;
```

このフィールドは、サービスの呼び出しが例外になり、ローカル時間とサーバー時間の間にずれがあると SDK で判断された場合に設定されます。

```
var offset = AWSConfigs.ClockOffset;
```

クロックスキューの詳細については、AWS ブログの「[クロックスキューの修正](https://blogs.aws.amazon.com/net/post/Tx2HM54KL5LMTGI/Clock-skew-correction)」を参照してください。

## 次のステップ
<a name="next-steps"></a>

これで、AWS Mobile SDK for .NET and Xamarin が設定され、以下を行えるようになります。
+  **使用を開始します。**AWS Mobile SDK for .NET and Xamarin のサービスの使用方法および設定方法のクイックスタート手順については、[AWS Mobile SDK for .NET and Xamarin の開始方法](getting-started-xamarin.md)をお読み下さい。
+  **サービストピックを表示します。**AWS Mobile SDK for .NET and Xamarin の各サービスの詳細と機能について説明します。
+  **デモを実行します。**[サンプルの Xamarin アプリケーション](https://github.com/awslabs/aws-sdk-net-samples/tree/master/XamarinSamples)を使用して、一般的ユースケースについて説明します。このサンプルアプリケーションを実行して、前述の AWS Mobile SDK for .NET and Xamarin を設定するには、各サンプルの README ファイルに記載された手順に従います。
+  **API について説明します。**[\$1sdk-xamarin-ref\$1\$1](https://docs.aws.amazon.com/sdkfornet/v3/apidocs/) を表示します。
+  **質問する**: [AWS Mobile SDK フォーラム](https://forums.aws.amazon.com/forum.jspa?forumID=88)に質問を投稿するか、[GitHub で問題を提起](https://github.com/awslabs/aws-sdk-xamarin/issues)してください。