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.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3Mzk1OTMyOTQsIm5iZiI6MTczOTU5Mjk5NCwicGF0aCI6Ii8yMjAwNTg2MS8zNDg5MDEwMjktMjU5YTM2OGEtMTJkYi00YmI0LTk2ZGMtNjhjMGJlZWNhOTkzLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMTUlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjE1VDA0MTYzNFomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWQxMTZlN2VjZWVjNWRiNTY0MGM3YjQwMzc5NDU3MmYzMDcxZTcwMWM0MWQ4OTM5YjVhNmVkMTk1NTEyMmMxNmUmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.Aow-fQgViNK0I9jhxmynvqe8aJgqT4PgI0i3Q0QjV2E)
- 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.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3Mzk1OTMyOTQsIm5iZiI6MTczOTU5Mjk5NCwicGF0aCI6Ii8yMjAwNTg2MS8zNDg4OTgwMzEtMGQ5ZmJiMmYtOGU4MC00MzY3LTk4ZDktNzI4YmM4NDdlZmM3LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMTUlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjE1VDA0MTYzNFomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWNlMGI2Mzc1MDBiMDZmYzcxMzQ0ZjU0OGQ1NDI2NTcwOWNhYWI4MzY1OTVjYjMxZjdlMzVhZTg1NzU3YzA2MzUmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.0B8bs6u1lfn3pUNVCoMPcwgswajkOVJ7Y7F4a-5f26g)
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.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3Mzk1OTMyOTQsIm5iZiI6MTczOTU5Mjk5NCwicGF0aCI6Ii8yMjAwNTg2MS8zNDg4OTgzOTMtZGFmY2M0NzctZDQyZC00MjE3LWE2NGItZmQ4MTk4ODViYTY2LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMTUlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjE1VDA0MTYzNFomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWY5M2Q0YTgyMmE1ZjBhNGNhNmIyM2E4ZjkxMmYwNWUyZTllN2RhMjFjNzc0NGRhMzg4M2Q3Nzk3YzZhM2ExMjEmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.d7Cu6uRN47o0lZ9b40IQ7ggrogFoHrTMAilpztmBMno)
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.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3Mzk1OTMyOTQsIm5iZiI6MTczOTU5Mjk5NCwicGF0aCI6Ii8yMjAwNTg2MS8zNDg4OTg4NTUtNmMyMWQ5MWMtN2NkZS00NGE2LTgwZDAtMTVlOTA3ZDg5Njk0LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMTUlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjE1VDA0MTYzNFomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTc2MDliYWY1MmYwZmZkNjU2MTM4MmJhNzczZjcyODNjN2VhZTFmZTAzMmY1Y2MxYTdlNjI4NTMzYWY3ZjQzZTcmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.63V2kgIclI6YTC_Dfj-vcI17LyxTWs5lsZV_ecyKShs)
Upload Lamda
![image](https://private-user-images.githubusercontent.com/22005861/348901560-31fcf3e0-cda4-4e08-8bd1-fa62ad8f1095.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3Mzk1OTMyOTQsIm5iZiI6MTczOTU5Mjk5NCwicGF0aCI6Ii8yMjAwNTg2MS8zNDg5MDE1NjAtMzFmY2YzZTAtY2RhNC00ZTA4LThiZDEtZmE2MmFkOGYxMDk1LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMTUlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjE1VDA0MTYzNFomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTZkYWI3NjYzMGZjM2U5NDllMmU1MmVkNDZiZGJiMzAxYTU4MTI1YmJlMTBkZDNhMmM1MzFkMmFlNTFhMDU5ODAmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.WDeYpbuFRfcqAPO434P_no00PJnm8tiRKVJOmAHu4LU)
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.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3Mzk1OTMyOTQsIm5iZiI6MTczOTU5Mjk5NCwicGF0aCI6Ii8yMjAwNTg2MS8zNDg4OTgwODQtZDIzOTYyNDAtOGI5MS00NGU5LThiMGQtZDBkOGU1ZTNiMTE1LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMTUlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjE1VDA0MTYzNFomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTUwMjFiYzdkOTBhNjgzNjk3MmEzZmI4Y2QzNjg0ODU2NTA3MjEzZTA0OGFkMzg1YTA4ZjcxZDdmNGFkYzE1ZTMmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.T0wus5Sqa2Dwl2LZOW1LIETPhxj431pRAQe7uHQdhz8)
Deploy
![iShot_2024-07-16_09 13 23](https://private-user-images.githubusercontent.com/22005861/348898131-38ecbbbe-57ba-445d-9f1e-ba84a1a0a2ce.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3Mzk1OTMyOTQsIm5iZiI6MTczOTU5Mjk5NCwicGF0aCI6Ii8yMjAwNTg2MS8zNDg4OTgxMzEtMzhlY2JiYmUtNTdiYS00NDVkLTlmMWUtYmE4NGExYTBhMmNlLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMTUlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjE1VDA0MTYzNFomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTEyZjMyNDBmZjE0ZGMzNzQ3M2Q5N2RhMzIzNzI4MmYxY2VkNTI4MzkzZDk3NTZjM2Q5YzNjZTU1NWVjOWZkN2MmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.mYaoqYmoGXWdc0ivN9k5phiB0YlzSKkPMVNDd9onkVQ)