ホームページ > バックエンド開発 > Golang > リソースを不足させることなく S3 ファイルのダウンロードを処理する

リソースを不足させることなく S3 ファイルのダウンロードを処理する

WBOY
リリース: 2024-02-10 19:36:09
転載
987 人が閲覧しました

处理 S3 文件下载而不耗尽资源

php エディタ Xinyi は、サーバー リソースの枯渇を避けるために S3 ファイルのダウンロードを処理する効率的な方法を紹介します。 S3 は Amazon が提供するスケーラブルなクラウド ストレージ サービスですが、大きなファイルのダウンロードを処理する場合、従来のダウンロード方法ではサーバー リソースが枯渇する可能性があります。この記事では、S3 ファイルのダウンロードを効果的に処理し、チャンク ダウンロードとストリーミングを通じてサーバーのパフォーマンスとユーザー エクスペリエンスを向上させる PHP ベースのソリューションを紹介します。この方法について一緒に学びましょう!

質問内容

S3で複数のファイルタイプをアップロードおよびダウンロードできるgo-ginアプリケーションを持っています。

s3 にアップロードする前のすべてのファイルは、AWS s3cryptoclient、AES GCM、および KMS のキーを使用して暗号化されます。したがって、s3 バケットに関する限り、すべてがバイナリです。

getObject の SDK コマンドを使用してファイルをサーバーにダウンロードし、復号化してから、io.write(tempfile) を使用してこのファイルをクライアントに提供してダウンロードできます。

ここでの問題は、S3 にサイズ 10 GB のファイルが含まれており、サーバーには毎日複数のユーザーがアクセスすることです。これまで見てきたように、16 GB の RAM を搭載したサーバーに一時ファイルを書き込むとメモリがすぐに使い果たされる可能性がありますが、そのようなサーバーの実行コストにも注意が必要です。

ボトルネックは、ファイルを提供する前に復号化する必要があることです。このユースケースでは、S3 署名付き URL で十分ですが、クライアントによって暗号化が行われない限り、S3 署名付き URL によって復号化は提供されません。私たちのケースでは AWS が暗号化を処理しているため、このソリューションは実現できません。

go-gin/NGINX を使用してクライアントに直接ファイルを書き込むことができる、この問題を解決するためのヒントや考えられる使用例を持っている人はいますか。

現在のユーザーによるファイルダウンロードの処理

リーリー

}

回避策

1 つのオプションは、オブジェクトを応答本文としてクライアントに直接書き込むことです。

リーリー

以上がリソースを不足させることなく S3 ファイルのダウンロードを処理するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:stackoverflow.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート