100%. It really just depends on the particular use case, particularly around how you handle any metadata associated with the object.
For example, you could include any other information in the first API request which returns the signed details needed for uploading. Then as you mentioned, a Lambda function could handle the new object event and fetch the other information from DynamoDB or somewhere else.
Alternatively, you could have a more generic first API endpoint that just says “I want to upload something”. The second API endpoint (the third request) would then contain the file URL and all the other information.
I think we’re on the same page. Thanks for the comment!