FireBase_Storage

こんにちはEveryDaySoft代表の永田です。
今回は世界中で具体的な対応方法を指した情報がなかったので紹介させていただきます。FireBaseのStorageにアプリからデータをアップロードする方法です。
Storageにデータをアップロード出来ないという情報
https://firebase.google.com/docs/storage/ios/start
FireBaseのStorageは画像等のファイルを格納する機能です。外部から読み込むためのURIを発行します。
FireBaseのアプリのドキュメントhttps://firebase.google.com/docs/storage/ios/start
上記のドキュメントの対応だけではアプリのコードから、Storageに画像などのファイルをインサートすることはできません。対応方法は、コードで認証情報を実装して認証照合させる、もしくは画像のように認証するコードを除いたスクリプトにするかです。
FireBase内のStorageを設定すると、デフォルトではrequest.authという認証判定のコードが実装されています。この認証が通っていないのが原因で上記のドキュメントで紹介されているプログラムだけではStorageにソースをアップロード出来ないのです。

認証情報のドキュメント
https://www.google.com/url?sa=t&rct=j&q=&esrc=s&source=web&cd=&cad=rja&uact=8&ved=2ahUKEwiT7PvVvsrrAhUTMd4KHc3WBYkQFjAAegQIBBAB&url=https%3A%2F%2Ffirebase.google.com%2Fdocs%2Fstorage%2Fsecurity%2Fuser-security%3Fhl%3Dja&usg=AOvVaw3rLXJp4xx3BV-3RTWP2mgz
なんでわかったかというとStorageにあるUsageでは認証と拒否というような項目があり、拒否の方にカウントが多かったので、認証が必要なのではと考えました。しかしこの機能は文字起こしをするための対応をしているので、この機能には認証判定は必要ないと考え、スクリプトから認証対応するコードを除きました。
成功した挙動は、アプリで声を録音したwavファイルをFireBaseのStorage内に格納し、ローカル上のEC2からZip化したPythonパッケージをS3に格納して、Lambdaで関数化し、APIGateWayで作成したAPIのqueryにFireBaseのStorage内にあるデータURIを設定しました。結果アプリで録音したファイルを文字起こしした内容をResponseと返しています。
https://twitter.com/dbank0208/status/1301084119921614848?s=20
今後はアプリ制作に向けて様々に確認して議事録アプリのようなものを作成したいと考えています。これはいろんな物に応用できると考えています。以上、貴重なお時間お読み下さいまして、誠にありがとうございます。