この問題の解決策として考えられるのは、S3バケットのイベントトリガーを使って、新しいファイルがS3バケットにアップロードされた時にリサイズLambda関数をトリガーする方法です。オブジェクトが変更された時ではなく、新しいオブジェクトが作成された時のみLambda関数がトリガーされるようにイベントを設定することができます。Lambda関数はファイルのサイズを変更し、元のファイルと同じキーを使用して同じS3バケットにリサイズバージョンを保存できますが、ファイルフォーマットは異なります（ファイル名に"_resized "を追加するなど）。

さらに、Lambda関数にチェックを追加することで、ファイルのリサイズを一度だけにすることができる。例えば、S3のオブジェクトのメタデータに、ファイルがリサイズされたかどうかを示すメタデータを格納することができます。リサイズする前に、Lambda関数はこのメタデータをチェックし、まだリサイズされていない場合のみファイルをリサイズすることができます。

これら2つの戦略を組み合わせることで、S3バケットにアップロードされた新しいファイルごとに1回だけLambda関数がトリガーされ、リサイズされたバージョンは元のファイルと同じキーで同じS3バケットに保存されるようにすることができる。
A possible solution to this problem is to use a S3 bucket event trigger to trigger the resizing Lambda function when a new file is uploaded to the S3 bucket. You can set the event to trigger the Lambda function only when a new object is created, not when it's modified. The Lambda function can then resize the file and store the resized version in the same S3 bucket using the same key as the original file, but with a different file format (e.g. adding "_resized" to the filename).

Additionally, you can add a check in the Lambda function to ensure it only resizes the file once. For example, you can store metadata in the object's metadata in S3 to indicate whether the file has been resized or not. Before resizing, the Lambda function can check this metadata and only resize the file if it hasn't been resized already.

By combining these two strategies, you can ensure that the Lambda function is triggered only once for each new file uploaded to the S3 bucket and that the resized version is stored in the same S3 bucket with the same key as the original file.