A possible design for this system would be to use a combination of Amazon S3 and AWS Lambda with a DynamoDB table to store metadata and prevent duplicates. Here's a high-level overview of the process:

1. User uploads a file to a designated S3 bucket, where it is stored with its original filename as the key.
2. S3 bucket triggers a Lambda function upon receiving a new file. The Lambda function checks if the file has already been processed by looking up its filename in a DynamoDB table.
3. If the file is not found in the DynamoDB table, the Lambda function reads the file from S3, resizes it, and writes the resized file back to S3 with the same key (filename) as the original file. The Lambda function then adds an entry for the file in the DynamoDB table.
4. If the file is found in the DynamoDB table, the Lambda function does not perform any resizing and exits.

This approach uses the filename as the key for both the original file and the resized file in S3, ensuring that the original filenames are preserved. The DynamoDB table serves as a deduplication mechanism to prevent the same file from being resized multiple times. The Lambda function is triggered only once per file and will only resize a file if it has not been processed before.
การออกแบบที่เป็นไปได้สำหรับระบบนี้คือการใช้ Amazon S3 และ AWS Lambda ร่วมกับตาราง DynamoDB เพื่อจัดเก็บข้อมูลเมตาและป้องกันการทำซ้ำ ภาพรวมระดับสูงของกระบวนการมีดังนี้ 1. ผู้ใช้อัปโหลดไฟล์ไปยังบัคเก็ต S3 ที่กำหนด ซึ่งจะถูกจัดเก็บโดยมีชื่อไฟล์ดั้งเดิมเป็นคีย์ 2. บัคเก็ต S3 จะทริกเกอร์ฟังก์ชัน Lambda เมื่อได้รับไฟล์ใหม่ ฟังก์ชัน Lambda จะตรวจสอบว่าไฟล์ได้รับการประมวลผลแล้วหรือไม่โดยการค้นหาชื่อไฟล์ในตาราง DynamoDB 3. หากไม่พบไฟล์ในตาราง DynamoDB ฟังก์ชัน Lambda จะอ่านไฟล์จาก S3 ปรับขนาด และเขียนไฟล์ที่ปรับขนาดแล้วกลับไปเป็น S3 ด้วยคีย์ (ชื่อไฟล์) เดียวกันกับไฟล์ต้นฉบับ จากนั้นฟังก์ชัน Lambda จะเพิ่มรายการสำหรับไฟล์ในตาราง DynamoDB 4. หากพบไฟล์ในตาราง DynamoDB ฟังก์ชัน Lambda จะไม่ทำการปรับขนาดและออก วิธีการนี้ใช้ชื่อไฟล์เป็นคีย์สำหรับทั้งไฟล์ต้นฉบับและไฟล์ที่ปรับขนาดใน S3 เพื่อให้แน่ใจว่าชื่อไฟล์ต้นฉบับจะยังคงอยู่ ตาราง DynamoDB ทำหน้าที่เป็นกลไกการขจัดข้อมูลซ้ำซ้อนเพื่อป้องกันไม่ให้ไฟล์เดียวกันถูกปรับขนาดหลายครั้ง ฟังก์ชัน Lambda จะถูกทริกเกอร์เพียงครั้งเดียวต่อไฟล์ และจะปรับขนาดไฟล์หากไม่เคยได้รับการประมวลผลมาก่อน
spam fails_task lang_mismatch pii not_appropriate hate_speech sexual_content quality toxicity humor helpfulness creativity violence