【質問】「ストリームアップロード」と「ファイルアップロード」の違い
はじめに(本質問にいたった背景)
はじまして。Qiitaに初投稿で緊張しています、、。
SEになって1年半ちょっとが経つのですが、最近になって初めてアプリ領域の仕事を任されました。
これまではインフラ周りの仕事が多く、とりあえずAWSの資格をちまちまと取得していた私に、急に上司から「アプリからS3にファイルをアップロード/ダウンロードする処理の設計・実装してくれないかな?ほら、AWS詳しいでしょ?」との命が下りました。
机上の勉強の結果で資格はいくつか持ってるけどAWSそこまで詳しくないし、なにより入社してからソースコードを読み書きしたことはないんだよなぁ、、と思いつつ自分のスキルアップのために2つ返事で引き受けたモノののやはり壁に直面したので、この場で皆様のお知恵を借りたく投稿させていただきました、、!
教えていただきたいこと
タスクを進めていく中で、ストリームアップロード」と「ファイルアップロード」の違い(システム内部の挙動)が分からなかったので、この場で質問させていただきたいです。。
S3アップロード・ダウンロード処理自体は、AWS SDKで提供されているAPIを利用することである程度容易に実装できました。ただ、AWSの公式ドキュメント内にある記載、ファイルやストリームを Amazon S3 にアップロードすることができます。
との記載を呼んだ際に、本節の冒頭に記したが疑問が生じました。APIで隠蔽されている内部の挙動が気になってしょうがないです、、
「ストリームアップロード」と「ファイルアップロード」の(システム内部の挙動)の違いはなんだ?
①ストリームでのアップロード処理イメージ
ストリームを利用したアップロード処理時の内部の挙動は以下のようにイメージしています。
1:ディスクにあるファイルをストリームを使ってメモリに少しずつ展開
2:メモリに展開したデータをs3に送信
②ファイルのアップロード処理イメージ
一方、ファイル自体?をアップロードする際の内部の挙動はまったくイメージできないです。。
この方式の場合もメモリに展開して送信しているのだとは思いますが、どの単位で読みだして送信しているのか、①の方式と比較した際のメリット/デメリットなどを教えていただけると幸いです。私も引き続き、勉強します!!