質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Unity3D

Unity3Dは、ゲームや対話式の3Dアプリケーション、トレーニングシュミレーション、そして医学的・建築学的な技術を可視化する、商業用の開発プラットフォームです。

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

Q&A

解決済

1回答

1070閲覧

UnityからAmazon S3にファイルをアップロードし、公開状態にする

shimazu

総合スコア38

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Unity3D

Unity3Dは、ゲームや対話式の3Dアプリケーション、トレーニングシュミレーション、そして医学的・建築学的な技術を可視化する、商業用の開発プラットフォームです。

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

0グッド

0クリップ

投稿2018/02/13 08:39

編集2018/02/13 09:55

UnityからAmazon S3にファイルをアップロードし、公開状態にする
https://qiita.com/arumani/items/a0fd345dd224fb5d05db

を参考に同じことをしようとしていますが,S3の処理で失敗します。

csharp

1 2using System.IO; 3using System.Collections; 4using System.Collections.Generic; 5using UnityEngine; 6using Amazon; 7using Amazon.S3; 8using Amazon.S3.Model; 9using Amazon.CognitoIdentity; 10 11public class TestS3 : MonoBehaviour { 12 13 // 以下AWSのテンプレ 14 void Start () { 15 UnityInitializer.AttachToGameObject(this.gameObject); 16 AWSConfigs.HttpClient = AWSConfigs.HttpClientOption.UnityWebRequest; 17 CognitoAWSCredentials credentials = new CognitoAWSCredentials ( 18 "ID プールの ID", // ID プールの ID 19 RegionEndpoint.APNortheast1 // リージョン 20 ); 21 22 // S3の設定とアップ 23 AmazonS3Client S3Client = new AmazonS3Client (credentials, RegionEndpoint.GetBySystemName(RegionEndpoint.APNortheast1.SystemName)); 24 string S3BucketName = "バケット名"; 25 string fileName = "アップしたいファイル名"; 26 27 var stream = new FileStream(Application.streamingAssetsPath + 28 Path.DirectorySeparatorChar + fileName, 29 FileMode.Open, FileAccess.Read, FileShare.Read); 30 31 Debug.Log(Application.streamingAssetsPath + 32 Path.DirectorySeparatorChar + fileName); 33 var request = new PostObjectRequest() 34 { 35 Bucket = S3BucketName, 36 Key = fileName, 37 InputStream = stream, 38 CannedACL = S3CannedACL.PublicRead // 公開状態 39 }; 40 41 S3Client.PostObjectAsync(request, (responseObj) => 42 { 43 if (responseObj.Exception == null) 44 { 45 Debug.Log("success"); 46 } 47 else 48 { 49 Debug.Log("fail");// ←結果がこれになる 50 } 51 }); 52 } 53} 54

どうすればうまくいくでしょうか?

特にわからなかったとこがIAMの設定で,
・ロールポリシーの作成 をクリック
・Policy Generator の枠内にある 選択 をクリック
とうがどこを押せばいいのかわかりませんでしたので以下のように設定しました。

json

1{ 2 "Version": "2012-10-17", 3 "Statement": [ 4 { 5 "Sid": "VisualEditor0", 6 "Effect": "Allow", 7 "Action": [ 8 "mobileanalytics:PutEvents", 9 "cognito-sync:*" 10 ], 11 "Resource": "*" 12 }, 13 { 14 "Sid": "VisualEditor1", 15 "Effect": "Allow", 16 "Action": "s3:*", 17 "Resource": "*" 18 } 19 ] 20}

Unityを実行した時のコンソール
イメージ説明

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

https://github.com/aws/aws-sdk-net/issues/332
に書かれているようにRegionを明記すれば成功した。具体的には以下

Csharp

1 2var request = new PostObjectRequest() 3{ 4 Bucket = S3BucketName, 5 Key = fileName, 6 InputStream = stream, 7 CannedACL = S3CannedACL.PublicRead, // 公開状態 8 Region = RegionEndpoint.APNortheast1 // ←これを追加!!!! 9}; 10

投稿2018/02/13 11:53

編集2018/02/13 11:57
shimazu

総合スコア38

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問