開発入門 > Unity > Unityからc#でAmazon Web ServiceのS3ストレージにアップロードするメモ

Unityからc#でAmazon Web ServiceのS3ストレージにアップロードするメモ

Unity5.3からAWSのS3ストレージへファイルをアップロードするメモです。

キーポイント

  • AWSが用意しているAWS Mobile SDK for Unityを利用する
  • S3への認証はCognito Identityを用いる

参考リンク

手順

S3バケットの作成

任意の名前でS3バケットを生成しておきます。Regionはどこでも構いません。今回はTokyoリージョンにtest-bucket-unityとバケット名で作成しました。

s3-1

以下のポリシーは、test-bucket-unity バケット内のすべてのファイルを表示できるアクセス許可をすべての閲覧者に付与します。このポリシーをコピーし、[Bucket Policy Editor] に貼り付けます。

 

Permissionの追加でAny Authenticated AWS UserにListとUpload/Delete権限を付与します。

aws

Identify Pool Idの取得

AWSログイン後、Amazon Cognito管理ページに移動します。 Cogniteは2016年6月現在US-EASTリージョンでしか提供されていません。

s3-2

Manage Federated Identitiesに進みます。

s3-3

Identify pool nameを名づけて、Enable access to unauthenticated identitiesをチェックしてCreate PoolをクリックしてIdentify Poolを作成します。

s3-4

アクセス権限設定のためのIAMロールを新規に作成します。特に規定の値から何も変更せずに「許可」をクリックします。

次に進むと、UnityからAWSへCognito Identify pool IDを用いたアクセスコードのサンプルが表示されます。

s3-5

IAMロール変更(S3アクセス権限付与)

次に作成したIdentify poolでS3へアクセスできるようにしておきましょう。IAMコンソールに移動して、ロールを見ると先ほど生成したIAMロール(今回の場合Cognito_test_pool_nameAuth_Role)がありますので設定を変更します。

s3-6

S3へのフルアクセスポリシーをアタッチします。

s3-7

これで、S3へのアクセス権限は完了。

Unity上でAWS利用

What is the AWS Mobile SDK for Unity? ページからAWS Mobile SDK for Unityをダウンロードします。

解凍したフォルダから下記2つのパッケージをインポートします。

  • AWSSDK.S3.3.1.7.2.unitypackage
  • AWSSDK.IdentityManagement.3.1.4.3.unitypackage

S3ExampleデモシーンでS3にアクセスできることを確認しましょう。

s3-8

S3にファイルをアップロードするクラスを作ったのでシェアしておきます。

利用するには下記のようにする

メモ

Exception: Main thread has not been set, is the AWSPrefab on the scene?エラーは
UnityInitializer.AttachToGameObject(this.gameObject);
で対処

Editorモードでは動かない?。。。。->動かないようです。。

 

追記(2016/09/04)

エディタモードでは上記方法でS3へのアップロードができないのでc#でコマンドライン上で動くコンソールアプリを開発しUnityから呼び出すことにした。コンソールアプリでは若干実装の方法が異なる
https://github.com/from2001/S3Uploader

1, Visual Studioでコンソールアプリケーションプロジェクトを作成

2,必要ライブラリをNugetでインストール

3,s3upload.cs(コンソールアプリ用)を作成

4,呼び出し方は同じ

S3アップロード用のコマンドラインツールはこちらにアップしました。
S3Uploader

 

カテゴリー: Unity

コメントを残す

メールアドレスが公開されることはありません。