

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

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

# S3 転送ユーティリティを使用する
<a name="s3-integration-transferutility"></a>

S3 転送ユーティリティを使用すると、Xamarin アプリケーションから S3 にファイルをアップロードおよびダウンロードしやすくなります。

## TransferUtility を初期化する
<a name="initialize-the-transferutility"></a>

S3 クライアントを作成して、次のように AWS 認証情報を渡し、続いて S3 クライアントを転送ユーティリティに渡します。

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

## (オプション) TransferUtility を設定する
<a name="optional-configure-the-transferutility"></a>

設定可能なオプションのプロパティは 3 種類あります。
+  **ConcurrentServiceRequests** - ファイルのアップロード/ダウンロードに使用するアクティブスレッド数または同時 (非同期) ウェブリクエスト数を決定します。デフォルト値は 10 です。
+  **MinSizeBeforePartUpload** - アップロードパートの最小パートサイズ (バイト単位) を取得または設定します。デフォルトでは 16 MB です。最小パートサイズを小さくすると、マルチパートアップロードは、多数の小さいパーツに分割されます。この値の設定が低すぎると、転送速度に悪影響が及び、各パートのレイテンシーおよびネットワーク通信は増加します。
+  **NumberOfUploadThreads** - 実行スレッド数を取得または設定します。このプロパティでは、ファイルのアップロードに使用するアクティブなスレッド数を決定します。デフォルトのスレッド数は 10 です。

S3 TransferUtility クライアントを設定するには、構成オブジェクトを作成してプロパティを設定し、オブジェクトを 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);
```

## ファイルをダウンロードする
<a name="download-a-file"></a>

S3 からファイルをダウンロードするには、Transfer Utility オブジェクトの `Download` を呼び出し、次のパラメータを渡します。
+  `file` - ダウンロードするファイルの文字列名。
+  `bucketName` - ファイルのダウンロード元の S3 バケットの文字列名。
+  `key` - ダウンロードする S3 オブジェクト (この場合はファイル) の名前を表す文字列。

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

## ファイルのアップロード
<a name="upload-a-file"></a>

S3 にファイルをアップロードするには、Transfer Utility オブジェクトの `Upload` を呼び出し、次のパラメータを渡します。
+  `file` - アップロードするファイルの文字列名。
+  `bucketName` - ファイルを保存する S3 バケットの文字列名。

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

上記のコードは、ファイルがディレクトリ (Environment.SpecialFolder.ApplicationData) にあることを前提としています。大容量ファイルをアップロードする場合は、自動的に S3 のマルチパートアップロード機能が使用されるため、スループットが向上します。