UnityからAWS S3にオブジェクトがアップロードできない場合の対処法
UnityからAWSヘのネットワーク実装で
AWS Mobile SDK for Unity の使用開始 - AWS Mobile SDK
を使用しようとするとUnityのバージョンによっては下記のようなエラーが出る場合があります。
Amazon.Runtime.Internal.HttpErrorResponseException: Exception of type 'Amazon.Runtime.Internal.HttpErrorResponseException' was thrown.
Unityのバージョン2017から若干ネットワークに関する仕様が若干変更したようです。(AWSのSDKは5..系のままアップデートされていない)
対処法は下記
- スクリプトのコンストラクタでHttpClientの設定を変更
UnityInitializer.AttachToGameObject(this.gameObject); AWSConfigs.HttpClient = AWSConfigs.HttpClientOption.UnityWebRequest;
- S3にオブジェクトをアップロードする場合はリクエストにリージョンを追加
var request = new PostObjectRequest() { Bucket = S3BucketName, Key = fileName, InputStream = stream, CannedACL = S3CannedACL.Private, Region = _S3Region };
これでSDKが正常に動作します。