human
Lambdaでサイズを変更するよりも、ファイルをS3にアップロードするシステムの最良の設計は何ですか。
gpt
S3にファイルをアップロードし、AWS Lambdaを使用してサイズを変更するシステムで、resize Lambda関数を複数回トリガーすることなく、可能な設計の1つを紹介します：

ユーザーはファイルをS3バケットにアップロードする。
S3は "Put Object "イベントを生成し、Lambda関数をトリガーする。
Lambda関数は、アップロードされたファイルが既にリサイズされているかどうかを、リサイズされたファイルが同じS3バケットに同じキーで異なる拡張子（例えば".resized"）で存在するかどうかでチェックする。
リサイズされたファイルが存在する場合、Lambda関数はそれ以上何もせずにリターンします。
リサイズされたファイルが存在しない場合、Lambda関数はS3から元のファイルを読み込み、リサイズ操作を実行し、リサイズされたファイルを同じキーで異なる拡張子を持つS3に書き戻します。
Lambda関数は、ファイルがリサイズされたことを示すフラグでS3のオリジナルファイルのメタデータを更新します。
この設計により、Lambda関数はアップロードされたファイルごとに1回だけトリガーされ、リサイズされたファイルは元のファイルと同じキーで同じS3バケットに保存されるため、リサイズされたファイルの追跡が容易になります。
human
元のファイル名を保持する代替アプローチを提案します。
gpt
オリジナルのファイル名を維持する別のアプローチとしては、次のようなものがある：

以前と同じようにファイルをS3にアップロード
S3がLambdaをトリガー
Lambdaは、S3オブジェクトに".resized "タグがあるかどうかで、ファイルが既にリサイズされているかどうかをチェックします。
タグが存在する場合、Lambdaは終了する
タグが存在しない場合

ラムダが画像のサイズを変更
Lambdaはリサイズされた画像を同じキー（ファイル名）を持つ新しいS3オブジェクトにコピーします。
ラムダは元のS3オブジェクトに".resized "タグを追加する

このアプローチでは、リサイズされたファイルを同じファイル名で保存し、オブジェクトタグを使用して、どのファイルがリサイズされたかを追跡します。
human
ファイルに「.resized」タグがあるかどうかを確認する方法は？