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.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkwODk3MDksIm5iZiI6MTczOTA4OTQwOSwicGF0aCI6Ii8yMjAwNTg2MS8zNDg5MDEwMjktMjU5YTM2OGEtMTJkYi00YmI0LTk2ZGMtNjhjMGJlZWNhOTkzLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMDklMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjA5VDA4MjMyOVomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWQ0OTk5MzAzMDQyMjM3OTRjZTI4MDNhYTM1NTNhZjYwMmI0MGZmZmQ4NjVhYjE1NDdiODM3MjE2NTZlMDgxZGImWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.Bcx4zdgZ93EIxjN7vAbkjzK-BX9_f5zP8jIIE66X3O8)
- 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.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkwODk3MDksIm5iZiI6MTczOTA4OTQwOSwicGF0aCI6Ii8yMjAwNTg2MS8zNDg4OTgwMzEtMGQ5ZmJiMmYtOGU4MC00MzY3LTk4ZDktNzI4YmM4NDdlZmM3LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMDklMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjA5VDA4MjMyOVomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTU4Y2YyZTQ5ZTMyMjE1YWFiMTBhOWQ4NTJiNzA0NGU1NWQwODkyNzQ5YzBiZmM4MzQ3ZjYwMzM3NDBmNTQ1ZmImWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.30-mWJHzdjGIubwxEU2yWzigpHPewwoGtv9zBXsEmvk)
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.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkwODk3MDksIm5iZiI6MTczOTA4OTQwOSwicGF0aCI6Ii8yMjAwNTg2MS8zNDg4OTgzOTMtZGFmY2M0NzctZDQyZC00MjE3LWE2NGItZmQ4MTk4ODViYTY2LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMDklMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjA5VDA4MjMyOVomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWMwMmM1MzMwODFjNjRjYjMzYTJjMmRjZWYyOTUyMzcyNDAxZjJhODk4MWY4NWY1ZGM4YTNkZmFlN2I2MzNjZWYmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.f1dza-y39W4dpQZ0JapKrB1p8lkx71ME0zQO5aSGZQU)
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.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkwODk3MDksIm5iZiI6MTczOTA4OTQwOSwicGF0aCI6Ii8yMjAwNTg2MS8zNDg4OTg4NTUtNmMyMWQ5MWMtN2NkZS00NGE2LTgwZDAtMTVlOTA3ZDg5Njk0LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMDklMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjA5VDA4MjMyOVomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTc2YWY2OTI5NThiMDE0NzM3MDgzZDJmNGEwN2I0OTFjNDQ2N2ViNGM2NTY0NzVlNDBjZWNkMjBhZTE5YTYyYjcmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.baMOIVRxobp1gs_jAF7YRmmGoYWaszfcArZtwQ6rUMs)
Upload Lamda
![image](https://private-user-images.githubusercontent.com/22005861/348901560-31fcf3e0-cda4-4e08-8bd1-fa62ad8f1095.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkwODk3MDksIm5iZiI6MTczOTA4OTQwOSwicGF0aCI6Ii8yMjAwNTg2MS8zNDg5MDE1NjAtMzFmY2YzZTAtY2RhNC00ZTA4LThiZDEtZmE2MmFkOGYxMDk1LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMDklMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjA5VDA4MjMyOVomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTJkNDc5ZDFiNDdiNDgyYzE1ZWYyNzNmMTdiMDQ1NGNiMjlmMDA5MTg1ZTQ4Mjc3NjM5NTg0NDhkMTZkYmQzYTYmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.uQBLtsJqmW_LlCbEwxEEF3CuDNFweMWuJwWaNFAyoQA)
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.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkwODk3MDksIm5iZiI6MTczOTA4OTQwOSwicGF0aCI6Ii8yMjAwNTg2MS8zNDg4OTgwODQtZDIzOTYyNDAtOGI5MS00NGU5LThiMGQtZDBkOGU1ZTNiMTE1LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMDklMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjA5VDA4MjMyOVomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWFkZDgxOGI1OTBhNmM4NGI5ODVmYTdlN2Q2MWM5YmIxZTg2ZTVkN2UxNjkxZWUzYTU0ODE0YzRkNTRkNWUwNTMmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.zJ15iNxilTHNTX74wVI0-kyepvvBqoEPSCR9yWkkXW8)
Deploy
![iShot_2024-07-16_09 13 23](https://private-user-images.githubusercontent.com/22005861/348898131-38ecbbbe-57ba-445d-9f1e-ba84a1a0a2ce.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkwODk3MDksIm5iZiI6MTczOTA4OTQwOSwicGF0aCI6Ii8yMjAwNTg2MS8zNDg4OTgxMzEtMzhlY2JiYmUtNTdiYS00NDVkLTlmMWUtYmE4NGExYTBhMmNlLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMDklMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjA5VDA4MjMyOVomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWM0MjI3YjEwM2UxMTUzNjgzNDUxOGIyNjM3MjE0NTcyODIxMjRkODI1OTU4MWExZmZkYjdlZTMyMWNjNzBhOWUmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.BEbCNV-JQAxvQc2I0d21AHeBkHlNTog_4wj-Bd8uarQ)