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.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3Mzk0NjU3OTgsIm5iZiI6MTczOTQ2NTQ5OCwicGF0aCI6Ii8yMjAwNTg2MS8zNDg5MDEwMjktMjU5YTM2OGEtMTJkYi00YmI0LTk2ZGMtNjhjMGJlZWNhOTkzLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMTMlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjEzVDE2NTEzOFomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTRiMWRlYzZkYzA1NzJjNmQ0YTBiNWQxNzI0YzQ4M2Q3ZWU5ZDAyZjY5ZjIxMzRmZDcyZjUyMjEwZjM3NzFiOTcmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.v_uRkHgSAKvbK51F_ha_rKRUkLq7lfVixeexMNWNUuY)
- 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.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3Mzk0NjU3OTgsIm5iZiI6MTczOTQ2NTQ5OCwicGF0aCI6Ii8yMjAwNTg2MS8zNDg4OTgwMzEtMGQ5ZmJiMmYtOGU4MC00MzY3LTk4ZDktNzI4YmM4NDdlZmM3LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMTMlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjEzVDE2NTEzOFomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWJlMTNiZGQ3MzE5YWRkZWFmNDEwMzUzNDQ0YWM3OGVjNmExNDhjYzgzNjVlMGExNWJkOGM2YWQ2NTZkZDNmMzUmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.MajJebuI3LYbGr_bDLGSL76bnpKs8iXLhoCqR0VYrHE)
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.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3Mzk0NjU3OTgsIm5iZiI6MTczOTQ2NTQ5OCwicGF0aCI6Ii8yMjAwNTg2MS8zNDg4OTgzOTMtZGFmY2M0NzctZDQyZC00MjE3LWE2NGItZmQ4MTk4ODViYTY2LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMTMlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjEzVDE2NTEzOFomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTNmMDQ5MTVjNDYzNThiMDczMDEzN2FmOGMwOTE5M2Q5MWVkYjk5YmNmM2Y4YWNlYzUxOWEyMjVmMTY5YzRmNGMmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.GF0QrPnbEGE-PYCSUzNg0dj48xS07xnPJ0XveBTQkoY)
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.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3Mzk0NjU3OTgsIm5iZiI6MTczOTQ2NTQ5OCwicGF0aCI6Ii8yMjAwNTg2MS8zNDg4OTg4NTUtNmMyMWQ5MWMtN2NkZS00NGE2LTgwZDAtMTVlOTA3ZDg5Njk0LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMTMlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjEzVDE2NTEzOFomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTM2MDk5NjNjOWMyY2JiMWNmNmE3NDNhNWM5ODU3YmE5YjA5NzA5YTY5YWVkYzk3Mzc4YzAwNzJkZmE1OGExMWEmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.e2--gDvZYFC-4-Q8M3f74hzLxtr_gJhKrW0apdIbMfQ)
Upload Lamda
![image](https://private-user-images.githubusercontent.com/22005861/348901560-31fcf3e0-cda4-4e08-8bd1-fa62ad8f1095.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3Mzk0NjU3OTgsIm5iZiI6MTczOTQ2NTQ5OCwicGF0aCI6Ii8yMjAwNTg2MS8zNDg5MDE1NjAtMzFmY2YzZTAtY2RhNC00ZTA4LThiZDEtZmE2MmFkOGYxMDk1LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMTMlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjEzVDE2NTEzOFomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWZkMTY0MTBiNmIyNWQ0ZTVmM2M5NmQ4NWE4YWM5NmM1OTQ3NzllYjdkMDUxMmIxY2NiYmVhZjY5ZTk0ZWQzNGUmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.1zhwil267115HEvlG5anN0AYz7kIzc4SKTko5I897G0)
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.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3Mzk0NjU3OTgsIm5iZiI6MTczOTQ2NTQ5OCwicGF0aCI6Ii8yMjAwNTg2MS8zNDg4OTgwODQtZDIzOTYyNDAtOGI5MS00NGU5LThiMGQtZDBkOGU1ZTNiMTE1LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMTMlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjEzVDE2NTEzOFomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWRkNWExMmQ5YzhiMjY4YWZkYTkyOTA0YjM3NmQ5NTFkODA3ZWE5YjI0NWFjZjk5MjAyZmJmYWZmNGE0NjIzNjcmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.r8ApHBOKQjw-Tl2GmqlS5jUoCo99oTMg6DAwZItyvqM)
Deploy
![iShot_2024-07-16_09 13 23](https://private-user-images.githubusercontent.com/22005861/348898131-38ecbbbe-57ba-445d-9f1e-ba84a1a0a2ce.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3Mzk0NjU3OTgsIm5iZiI6MTczOTQ2NTQ5OCwicGF0aCI6Ii8yMjAwNTg2MS8zNDg4OTgxMzEtMzhlY2JiYmUtNTdiYS00NDVkLTlmMWUtYmE4NGExYTBhMmNlLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMTMlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjEzVDE2NTEzOFomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWQxMjBjYTIyMWZkMTc3YjNhYzE5ZjgyMmJlZjI1NmJhMjc3NmRiNWE3MjhjYTZmNzEzNzY5MDU0Y2JlMzg1MmUmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.g_MhVaJih2LQJp0Z8qUbXIJTYDyhUul5eL0WGOpQ5bw)