41307


現在、GAE(standard開発環境)にてサイズの大きなCSVファイルを受信して、解析するウェブアプリケーションの作成を試みております。

公式GCPでは、リクエストのサイズ上限が32MBであることが明記されており、32.8MB以上のCSVファイルがリクエストできないことは実証済であります。

リクエストがGCPの外から送られる場合、ファイル制限をGAE側ではできないため、  
何か良い方法がないか模索中です。  
・GoogleCloudStorageを使う  
→ 読み込みには認証なしでも可能であるが、書き込みには必要である  
・GKEを使う  
→ GAEに比べて、より細かい制御ができるようだが、そもそもリクエストがGCPのフロントエンドで弾かれているのではないか、と心配している。

何か、打破するためのアドバイスや知見、アイデアを頂けないでしょうか？


CC BY-SA 3.0
2018-01-29T02:06:05.000
41272
2018-08-27T01:01:32.363
24207
question
google-app-engine csv google-cloud
GCPを使って、サイズの大きなＣＳＶファイルをリクエスト受信する方法は？


Google App Engine Standardにファイルをアップロード, ダウンロードする場合、よくやる手段は以下の2つです。

# Blobstore Serviceを利用する

<https://cloud.google.com/appengine/docs/standard/go/blobstore/>  
Blobstore Serviceを通じて、ファイルをGoogle Cloud Storage上にアップロード, ダウンロードすることができます。  
App EngineでBlobstore用のURLを発行して、クライアントにはそこにアップロードしてもらいます。  
アップロードが完了すると、App EngineにCallbackが返ってきます。

# Google Cloud Storage Signed URLを利用する

<https://cloud.google.com/storage/docs/access-control/signed-urls?hl=ja>  
Signed URLは署名付きのながーいURLを発行し、一定時間そのURLを知っていれば、Cloud Storageにアクセス可能という機能です。  
こちらもBlobstoreと同じようにApp EngineからSigned URLを発行して、クライアントにはそこにファイルをアップロードしてもらいます。  
ただ、Callback機能はないので、アップロードが完了したのかどうかはApp Engineが見に行く必要があります。

# その他

Google Compute Engine, Google Kubernetes Engineを利用して、自前でWeb
Serverを立てても、もちろんファイルアップロード, ダウンロードは可能です。  
アップロードされたファイルをメモリに展開したい時やインストール型のミドルウェアで処理したい時などは、これらの手段が検討されます。  
ただ、その場合はHTTPSの証明書の設定などは自分でやる必要があります。


CC BY-SA 3.0
2018-01-30T00:03:43.373
41307
2018-01-30T00:03:43.373
4361
41272
answer