Page 706 - Nodejs 교과서 개정2판
P. 706

ۈ׮о प೯ೡ JOEFY KTܳ ੘ࢿ೤פ׮

          aws-upload/index.js

           const	AWS	=	require('aws-sdk');
           const	sharp	=	require('sharp');


           const	s3	=	new	AWS.S3();
           ➊
           exports.handler	=	async	(event,	context,	callback)	=>	{
           ➋

           		const	Bucket	=	event.Records[0].s3.bucket.name;
           		const	Key	=	decodeURIComponent(event.Records[0].s3.object.key);
           		const	filename	=	Key.split('/')[Key.split('/').length	-	1];
           		const	ext	=	Key.split('.')[Key.split('.').length	-	1].toLowerCase();
           		const	requiredFormat	=	ext	===	'jpg'	?	'jpeg'	:	ext;	//	sharp에서는	jpg	대신	jpeg를	사용합니다.
           		console.log('name',	filename,	'ext',	ext);
           ➌
           		try	{
           				const	s3Object	=	await	s3.getObject({	Bucket,	Key	}).promise();	//	버퍼로	가져오기
           				console.log('original',	s3Object.Body.length);
           ➍

           				const	resizedImage	=	await	sharp(s3Object.Body)	//	리사이징
           						.resize(200,	200,	{	fit:	'inside'	})
           						.toFormat(requiredFormat)
           						.toBuffer();
           ➎
           				await	s3.putObject({	//	thumb	폴더에	저장
           						Bucket,
           						Key:	`thumb/${filename}`,
           						Body:	resizedImage,
           				}).promise();
           				console.log('put',	resizedImage.length);
           				return	callback(null,	`thumb/${filename}`);
           		}	catch	(error)	{
           				console.error(error);
           				return	callback(error);
           		}
           };




         ➊ handler ೣࣻо ۈ׮ ഐ୹ द प೯غח ೣࣻੑפ׮  ݒѐ߸ࣻ۽ event৬ context  DBMMCBDL੉ ઱য૘פ׮  e

            ventח ഐ୹ ࢚ടী ؀ೠ ੿ࠁо ׸ѹ ੓Ҋ  contextח प೯غח ೣࣻ ജ҃ী ؀ೠ ੿ࠁо ׸ѹ ੓णפ׮  ૒

            ੽ console.logೞৈ যځೠ ੿ࠁٜ੉ ٜয ੓ח૑ ഛੋ೧ࠁח Ѫ੉ જणפ׮  callback਷ ೣࣻо ৮ܐغ঻
   701   702   703   704   705   706   707   708   709   710   711