This is a simple example of how to use AWS Lambda to resize images on the fly using Amazon CloudFront.
- Low-resolution images on high-resolution displays create a bad user experience.
- High-resolution images on low-resolution displays waste bandwidth, device, and server resources, especially when using a framework that adopts images in-app and crops or resizes images, making the app heavy.
Add query parameters. that's it.
- width
- height
- format ('auto' option check accept request header)
- quality (0~100, default: 100)
- https://your-domain/images/hangang-river.jpeg?width=1100 (940KB)
- https://your-domain/images/hangang-river.jpeg?width=1100&format=webp (658KB)
![image](https://private-user-images.githubusercontent.com/22005861/348901029-259a368a-12db-4bb4-96dc-68c0beeca993.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3Mzk1NDg4OTAsIm5iZiI6MTczOTU0ODU5MCwicGF0aCI6Ii8yMjAwNTg2MS8zNDg5MDEwMjktMjU5YTM2OGEtMTJkYi00YmI0LTk2ZGMtNjhjMGJlZWNhOTkzLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMTQlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjE0VDE1NTYzMFomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTliMjI0ZmZkMzYwZmY4MzMzM2FmNTU2ZWE3ZTA2ODJjYzU2YjM4YTE3YzQ5NjY3ODM5ZWZmOWNlNmQ2NWZkNWImWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.WkEcOYEt85ZGcxEhyUXsYI8P29fgzUEBLfO7S-iq7HE)
- The user requests an image from CloudFront.
- CloudFront forwards the request to the Lambda function.
- The Lambda function resizes the image and returns it to CloudFront.
- CloudFront caches the image and returns it to the user.
- The next time the same image is requested, CloudFront returns the cached image.
- If the image is updated, the cache is invalidated and the process starts over.
- The Lambda function is only invoked when the image is requested for the first time or when the cache is invalidated.
Create lamda function (choose us-east-1 for using cloudfront response trigger)
![iShot_2024-07-16_09 13 55](https://private-user-images.githubusercontent.com/22005861/348898031-0d9fbb2f-8e80-4367-98d9-728bc847efc7.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3Mzk1NDg4OTAsIm5iZiI6MTczOTU0ODU5MCwicGF0aCI6Ii8yMjAwNTg2MS8zNDg4OTgwMzEtMGQ5ZmJiMmYtOGU4MC00MzY3LTk4ZDktNzI4YmM4NDdlZmM3LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMTQlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjE0VDE1NTYzMFomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWRlZWVjZGU3NDE2ZmU2YzgzZWQxZWM4NmE0ZTVjY2YyMDdmNmJmYjE2N2YwNDhmMTU2NjYzNjhhNjc4NWJmYjkmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.mS0DUVS-cBAOXfhdXsjgz4WmGqvxR155H_7watdmQE4)
Create clound9 for writing lamda function source code
![image](https://private-user-images.githubusercontent.com/22005861/348898393-dafcc477-d42d-4217-a64b-fd819885ba66.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3Mzk1NDg4OTAsIm5iZiI6MTczOTU0ODU5MCwicGF0aCI6Ii8yMjAwNTg2MS8zNDg4OTgzOTMtZGFmY2M0NzctZDQyZC00MjE3LWE2NGItZmQ4MTk4ODViYTY2LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMTQlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjE0VDE1NTYzMFomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTVmYWI3NWVhYWIwZjkwNDAyYzI2M2JhNjNlOWYwNzM5NTllYzdiYzVmZWE4ZjdjNmIyMTE0NGJiMWEyYzIwYTQmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.WEqOl0bbaWrVBDBviNRhUGo1pEIIb7ThdbS9vWXSCD8)
Write lamda function
Write code (See this repository source code)
![image](https://private-user-images.githubusercontent.com/22005861/348898855-6c21d91c-7cde-44a6-80d0-15e907d89694.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3Mzk1NDg4OTAsIm5iZiI6MTczOTU0ODU5MCwicGF0aCI6Ii8yMjAwNTg2MS8zNDg4OTg4NTUtNmMyMWQ5MWMtN2NkZS00NGE2LTgwZDAtMTVlOTA3ZDg5Njk0LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMTQlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjE0VDE1NTYzMFomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWUxNWM0MzQ1NDYwMzc0YTcwZjU3NzQyZGUwODIyZDMzNDY0NWEyNTdmZjA0ODEzZmEzZWFlY2M2MjRhNmRhZjUmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.K1WhRSt47IqgXOKiuZLMsqtzSi5X9_vVBUUwgjyM5SE)
Upload Lamda
![image](https://private-user-images.githubusercontent.com/22005861/348901560-31fcf3e0-cda4-4e08-8bd1-fa62ad8f1095.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3Mzk1NDg4OTAsIm5iZiI6MTczOTU0ODU5MCwicGF0aCI6Ii8yMjAwNTg2MS8zNDg5MDE1NjAtMzFmY2YzZTAtY2RhNC00ZTA4LThiZDEtZmE2MmFkOGYxMDk1LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMTQlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjE0VDE1NTYzMFomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWUxOWE2OWM1YzAzOWFiMDA4NGE3ODY2OGU0ZTdkNjllZDIwZTRjZTFhMjY3NjI0ODRjYjJkYjVmZjBmMGMyZTgmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.BTbeo4fE_z45U-v5m08_LRhuTtMvSRrHeRxpsRkCKDw)
Select "Directory" -> "No" -> Select proejct folder -> Open (just few minutes left, it will show complete message toast)
Add Trigger
![iShot_2024-07-16_09 14 17](https://private-user-images.githubusercontent.com/22005861/348898084-d2396240-8b91-44e9-8b0d-d0d8e5e3b115.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3Mzk1NDg4OTAsIm5iZiI6MTczOTU0ODU5MCwicGF0aCI6Ii8yMjAwNTg2MS8zNDg4OTgwODQtZDIzOTYyNDAtOGI5MS00NGU5LThiMGQtZDBkOGU1ZTNiMTE1LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMTQlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjE0VDE1NTYzMFomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTJlZTc0ZWU3Y2NjNmI4NGYzMDRhZGRhZjhiMTM1MDY4NWU5M2JjOWMxODQ4NDY4ZmQ2OGY1M2JmOTAwZjY3ODkmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.3Rgr6asjTGYJspIDP494TLZIlKxlX7qS9dr1PBZBDN4)
Deploy
![iShot_2024-07-16_09 13 23](https://private-user-images.githubusercontent.com/22005861/348898131-38ecbbbe-57ba-445d-9f1e-ba84a1a0a2ce.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3Mzk1NDg4OTAsIm5iZiI6MTczOTU0ODU5MCwicGF0aCI6Ii8yMjAwNTg2MS8zNDg4OTgxMzEtMzhlY2JiYmUtNTdiYS00NDVkLTlmMWUtYmE4NGExYTBhMmNlLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMTQlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjE0VDE1NTYzMFomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTQ4NGEyNWEwODExNmEyYjU1Y2U1OGEyNjMxYzQwMTMzZGQxMmQ1NDhmYzZlODlhOWM2NzhhMDE1OTI4MzFhODQmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.HMLyOiPUmv6KJ4f9o9LxOfBhWEtGmcrLV3rz0XQqaog)