私は特にREST APIとSpring Bootを使っています。私はS3ファイルを要求され、何らかの形でそれらを返さなければならないマイクロサービスをコーディングしています。ファイルは大きすぎて(2GB +)、マイクロサービスのメモリに保存してから呼び出し元に送り返すので、シリアライズされたS3Objectを返すだけで、クライアントはファイルの内容をチャンクでストリームすることができますS3ObjectInputStream.read(bytes [])Spring Boot ControllerからS3Objectを返すことはできますか?
私はこれを可能にするのに苦労しています。私の限られた知識のために、これが可能であれば、私はライトも考えています。
私はResponseEntityを返そうとしました。 Postmanではすべてがクールで、S3Objectはjacksonライブラリで正しくシリアライズされますが、メソッドS3Object.setObjectContentがオーバーロードされ、複数のセッターが競合するため、クライアント側の脱塩がクラッシュします。
BodyとしてSerializationUtils.serialize(S3Object)を使用してResponseEntityを返すことも失敗します。 Serializableインターフェイスを実装しているS3Objectでも、結果としてbyte []の長さは1000です。逆シリアル化すると、S3Object.getObjectContent()は常にnullを返すため、オブジェクトの内容を取得できません。
どうすればよいですか?
署名付きダウンロードURLを作成してリダイレクトできませんか?あなたのサーバーからではなく、S3から直接ダウンロードさせるか? – Ivar