Amazon Simple Storage Service (S3) - AWS Mobile SDK

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

Amazon Simple Storage Service (S3)

S3 とは

Amazon Simple Storage Service (Amazon S3) を使用すると、開発者は、耐久性および耐障害性が高く、セキュアなオブジェクトストレージを使用できるようになります。Amazon S3 の使用方法は簡単です。シンプルなウェブサービスインターフェイスを使用して、ウェブ上のどこからでも容量に関係なくデータを保存、取得できます。Amazon S3 のお支払いは、実際に使用したストレージ分のみです。最低料金もセットアップするための費用も不要です。

Amazon S3 は、クラウドアプリケーション、コンテンツ配信、バックアップとアーカイブ、災害対策、ビッグデータ分析など、さまざまなユースケースにおいてコスト効率のいいオブジェクトストレージです。

AWS S3 リージョンの可用性の詳細については、「AWS サービスリージョンの可用性」を参照してください。

主なコンセプト

バケット

Amazon S3 に保存したオブジェクトはすべて、バケット内にあります。ファイルシステムでディレクトリを使用してファイルをグループ化するのと同じ方法で、バケットを使用して関連するオブジェクトをグループ化できます。バケットにはアクセス許可やバージョニングステータスなどのプロパティがあり、バケットを保存するリージョンを指定できます。

S3 バケットの詳細については、S3 開発者ガイドの「バケットの使用」を参照してください。

オブジェクト

オブジェクトは、Amazon S3 に保存するデータです。すべてのオブジェクトは、特定の AWS リージョンに作成したバケット内に存在します。

明示的に別のリージョンに移動する場合を除き、特定のリージョンに保存されたオブジェクトは、そのリージョンから移動されることはありません。たとえば、欧州(アイルランド)リージョンに格納されたオブジェクトは、ずっとそのリージョンに置かれたままです。Amazon S3 リージョンに格納されたオブジェクトはそのリージョンに物理的に残ります。Amazon S3 ではコピーが保持されることも、他のいずれのリージョンに移動されることもありません。ただし、それらのオブジェクトには、必要なアクセス許可がある限り、どこからでもアクセスできます。

オブジェクトのファイル形式は任意です (画像、バックアップデータ、動画など)。オブジェクトのサイズは最大 5 TB です。バケット内のオブジェクトの数に制限はありません。

Amazon S3 にオブジェクトをアップロードする前に、バケットに対する書き込みアクセス許可が必要です。バケットのアクセス許可を設定する方法については、S3 開発者ガイドの「バケット許可の編集」を参照してください。

S3 オブジェクトの詳細については、S3 開発者ガイドの「オブジェクトの使用」を参照してください。

オブジェクトメタデータ

Amazon S3 内の各オブジェクトには、メタデータを表す一連のキーと値のペアがあります。メタデータには、以下の 2 種類があります。

  • システムメタデータ - Amazon S3 によって処理されることがあります (例: Content-Type、Content-Length)。

  • ユーザーメタデータ – Amazon S3 によって処理されることはありません。ユーザーメタデータはオブジェクトと共に保存され、返されます。ユーザーメタデータは最大 2 KB です。キーもその値も US-ASCII 規格に準拠している必要があります。

S3 オブジェクトのメタデータの詳細については、「オブジェクトのメタデータの編集」を参照してください。

プロジェクトのセットアップ

前提条件

アプリケーションで Amazon S3 を使用するには、プロジェクトに SDK を追加する必要があります。「AWS Mobile SDK for .NET and Xamarin をセットアップする」の手順に従って、追加します。

S3 バケットの作成

Amazon S3 は、特定のリージョンのクラウドストレージコンテナである Amazon S3 バケットにアプリケーションのリソースを保存します。Amazon S3 バケットの名前は、それぞれグローバルに一意である必要があります。Amazon S3 コンソールを使用して、バケットを作成します。

  1. Amazon S3 コンソールにサインインし、[バケットを作成する] をクリックします。

  2. バケット名を入力してリージョンを選択したら [作成] をクリックします。

S3 のアクセス許可を設定

デフォルトの IAM ロールのポリシーでは、Amazon Mobile Analytics および Amazon Cognito Sync へのアクセス権がアプリケーションに付与されています。Cognito ID プールから Amazon S3 にアクセスできるようにするには、ID プールのロールを変更する必要があります。

  1. Identity and Access Management コンソールに移動し、左側のペインの [ロール] をクリックします。

  2. 検索ボックスに ID プールの名前を入力します。2 つのロール (未認証ユーザーと認証済みユーザー) が表示されます。

  3. 未認証ユーザーのロールをクリックします (unauth を ID プール名に追加)。

  4. [ロールポリシーの作成] をクリックして [Policy Generator] を選択し、[選択] をクリックします。

  5. [アクセス許可の編集] ページで、以下のイメージに示す設定を入力し、Amazon リソースネーム (ARN) を実際の名前に置き換えます。S3 バケットの ARN は、arn:aws:s3:::examplebucket/* のように表示され、バケットを配置するリージョンとバケットの名前で構成されます。以下に示す設定では、ID プールから指定したバケットのすべてのアクションにフルアクセスを付与しています。

    Edit Permissions interface for AWS policy creation, showing options for Amazon S3 access control.
  1. [ステートメントを追加] ボタンをクリックし、[次のステップ] をクリックします。

  2. ウィザードに、生成した設定が表示されます。[ポリシーの適用] をクリックします。

S3 に対するアクセス権の付与の詳細については、「Amazon S3 バケットへアクセス権を付与する」を参照してください。

(オプション) S3 リクエストの署名バージョンを設定する

Amazon S3 とのすべてのやり取りは認証されるか匿名で行われます。AWS では、署名バージョン 4 または署名バージョン 2 のアルゴリズムを使用して、サービスへの呼び出しを認証します。

2014 年 1 月以降に作成されたすべての新しい AWS リージョンでは、署名バージョン 4 のみをサポートしています。ただし、以前のリージョンの多くは、現在も署名バージョン 4 および署名バージョン 2 のリクエストに対応しています。

バケットが、こちらのページの署名バージョン 2 のリクエストをサポートしていないリージョンのいずれかにある場合は、次のように、AWSConfigsS3.UseSignatureVersion4 プロパティを「true」に設定する必要があります。

AWSConfigsS3.UseSignatureVersion4 = true;

AWS 署名バージョンの詳細については、「リクエストの認証 (AWS 署名バージョン 4)」を参照してください。

S3 とアプリケーションの統合

Xamarin アプリケーションで S3 を操作する方法は 2 種類あります。この 2 種類のメソッドについては、次のトピックで詳しく説明します。

トピック