質問: 現在、GAE(standard開発環境)にてサイズの大きなCSVファイルを受信して、解析するウェブアプリケーションの作成を試みております。 公式GCPでは、リクエストのサイズ上限が32MBであることが明記されており、32.8MB以上のCSVファイルがリクエストできないことは実証済であります。 リクエストがGCPの外から送られる場合、ファイル制限をGAE側ではできないため、 何か良い方法がないか模索中です。 ・GoogleCloudStorageを使う → 読み込みには認証なしでも可能であるが、書き込みには必要である ・GKEを使う → GAEに比べて、より細かい制御ができるようだが、そもそもリクエストがGCPのフロントエンドで弾かれているのではないか、と心配している。 何か、打破するためのアドバイスや知見、アイデアを頂けないでしょうか?
回答: Google App Engine Standardにファイルをアップロード, ダウンロードする場合、よくやる手段は以下の2つです。 Blobstore Serviceを利用する ====================== Blobstore Serviceを通じて、ファイルをGoogle Cloud Storage上にアップロード, ダウンロードすることができます。 App EngineでBlobstore用のURLを発行して、クライアントにはそこにアップロードしてもらいます。 アップロードが完了すると、App EngineにCallbackが返ってきます。 Google Cloud Storage Signed URLを利用する ==================================== Signed URLは署名付きのながーいURLを発行し、一定時間そのURLを知っていれば、Cloud Storageにアクセス可能という機能です。 こちらもBlobstoreと同じようにApp EngineからSigned URLを発行して、クライアントにはそこにファイルをアップロードしてもらいます。 ただ、Callback機能はないので、アップロードが完了したのかどうかはApp Engineが見に行く必要があります。 その他 === Google Compute Engine, Google Kubernetes Engineを利用して、自前でWeb Serverを立てても、もちろんファイルアップロード, ダウンロードは可能です。 アップロードされたファイルをメモリに展開したい時やインストール型のミドルウェアで処理したい時などは、これらの手段が検討されます。 ただ、その場合はHTTPSの証明書の設定などは自分でやる必要があります。