FRMSKI開発ブログ

AWS、iOS、AR/VRなど開発メモ

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..系のままアップデートされていない)

対処法は下記

  1. スクリプトのコンストラクタでHttpClientの設定を変更
UnityInitializer.AttachToGameObject(this.gameObject);
AWSConfigs.HttpClient = AWSConfigs.HttpClientOption.UnityWebRequest;
  1. S3にオブジェクトをアップロードする場合はリクエストにリージョンを追加
var request = new PostObjectRequest()
{
          Bucket = S3BucketName,
          Key = fileName,
          InputStream = stream,
          CannedACL = S3CannedACL.Private,
          Region = _S3Region
};

これでSDKが正常に動作します。