FlutterのAmplifyでS3にファイルをアップロードするとフォルダにPrefixがつく

Photo by Sergio Capuzzimati / Unsplash

FlutterのAmplifyでS3にファイルをアップロードするとフォルダにPrefixをつけられてしまう FlutterでAWS S3にファイルをアップロードするためにprachiFam/amazon_s3_cognitoというライブラリを利用していた。

しかしこのライブラリでは最新のFlutterでAndroid向けにビルドできない問題があり、AWSの公式ライブラリであるaws-amplify/amplify-flutterに乗り換えようとした。

amplifyコマンドでauthとstorageをimport。amplifyライブラリを組み込みセットアップを完了。アップロードは成功した。しかしサービスのサーバ側がファイルを認識しない。S3のbucketを開いてもファイルは無い…と思ったら実はpublic/アップロードで指定したkeyとしてファイルがアップロードされていた。

実はAmplifyライブラリを利用すると自動的にフォルダにprefixが付与され、アクセス権限ごとに別フォルダになるようになっていた。amplify-flutterが内部で利用するiOSやAndroidのライブラリでは設定でprefixを変更できるように修正済みのようだが、Flutterのライブラリは追随できていないようだ。 Feature Request: Support the use of custom storage paths · Issue #416 · aws-amplify/amplify-flutter回避する方法はなさそうなので、サーバ側でprefixの付いたファイルも処理してもらうようにお願いした。

iOS/Androidのライブラリを内部で利用するFlutterライブラリは各OSのライブラリの更新とFlutterライブラリの更新が必要で時間がかかるのはFlutterの弱みだと再認識した。

Ryoichi Izumita

Ryoichi Izumita