жҲ‘们дҪҝз”ЁжңәеҷЁеӯҰд№ жҠҖжңҜе°ҶиӢұж–ҮеҚҡе®ўзҝ»иҜ‘дёәз®ҖдҪ“дёӯж–ҮгҖӮжӮЁеҸҜд»ҘзӮ№еҮ»еҜјиҲӘж Ҹдёӯзҡ„вҖңдёӯж–ҮпјҲз®ҖдҪ“пјүвҖқеҲҮжҚўеҲ°иӢұж–ҮзүҲжң¬гҖӮ
зј©зҹӯ Lambda еҶ·еҗҜеҠЁж—¶й—ҙпјҡиҝҒз§»еҲ°йҖӮз”ЁдәҺ JavaScript зҡ„ дәҡ马йҖҠдә‘з§‘жҠҖ ејҖеҸ‘е·Ҙе…·еҢ…
еҪ“жҲ‘们зҡ„е®ўжҲ·е°Ҷе…¶еә”з”ЁзЁӢеәҸд»Һ JS SDK v2 иҝҒз§»еҲ° v3 ж—¶пјҢ他们дёҖзӣҙеңЁиҰҒжұӮдҪҝз”ЁеҸҜйқ зҡ„еҹәеҮҶжөӢиҜ•жқҘиҜ„дј° SDK еңЁеёёи§Ғз”ЁдҫӢдёӯзҡ„жҖ§иғҪгҖӮдёәдәҶе“Қеә”иҝҷдәӣиҜ·жұӮпјҢJS SDK еӣўйҳҹеҜ№ дәҡ马йҖҠдә‘з§‘жҠҖ Lambda зҡ„еҶ·еҗҜеҠЁж—¶й—ҙиҝӣиЎҢдәҶеҹәеҮҶжөӢиҜ•пјҢеӣ дёәиҝҷжҳҜе®ўжҲ·зҡ„еёёи§Ғз”ЁдҫӢпјҢд№ҹжҳҜеҫҲеҘҪзҡ„еҸӮиҖғж ҮеҮҶгҖӮжҲ‘们зҡ„еҹәеҮҶжөӢиҜ•жҳҫзӨәпјҢдёҺеӨ§еӨҡж•°еёёи§Ғз”ЁдҫӢдёӯзҡ„ v2 зӣёжҜ”пјҢv3 зј©зҹӯдәҶеҶ·еҗҜеҠЁж—¶й—ҙгҖӮе°Ҫз®ЎиҝҷдәӣеҹәеҮҶжөӢиҜ•дҫ§йҮҚдәҺ Lambda еҶ·еҗҜеҠЁж—¶й—ҙпјҢдҪҶж— и®әжӮЁдҪҝз”Ёе“Әз§Қи®Ўз®—жңҚеҠЎпјҢиҝҒз§»еҲ° v3 йҖҡеёёйғҪиғҪжҸҗй«ҳеә”з”ЁзЁӢеәҸжҖ§иғҪгҖӮ
иҮӘеҸ‘еёғд»ҘжқҘпјҢLambda е·ІеҜ№е…¶ Node.js 18 иҝҗиЎҢж—¶иҝӣиЎҢдәҶеӨҡйЎ№жҖ§иғҪдјҳеҢ–пјҢжң¬еҚҡе®ўж–Үз« дёӯзҡ„ж•°жҚ®еҹәдәҺжңҖж–°зҡ„иҝҗиЎҢж—¶зүҲжң¬гҖӮеҰӮжһңжӮЁеҜ№ Lambda еҶ·еҗҜеҠЁж—¶й—ҙеҫҲж•Ҹж„ҹпјҢжҲ‘们е»әи®®е°ҶжӮЁзҡ„ Lambda еҮҪж•°жҚҶз»‘еңЁдёҖиө·пјҢиҜҘеҮҪж•°дҪҝз”ЁеёҰжңүе‘Ҫд»ӨеҜ№иұЎзҡ„еҮҶзі»з»ҹ SDK е®ўжҲ·з«ҜпјҢеҢ…жӢ¬ JS SDK v3гҖӮжӮЁеә”иҜҘдёәз”ҹдә§еә”з”ЁзЁӢеәҸиҝҗиЎҢиҮӘе·ұзҡ„еҹәеҮҶжөӢиҜ•пјҢе№¶дҪҝз”ЁиҝҷзҜҮеҚҡе®ўж–Үз« дҪңдёәеҸӮиҖғгҖӮжӮЁд№ҹеҸҜд»ҘеҸӮиҖғд№ӢеүҚе…ідәҺ
д»Җд№ҲжҳҜеҹәеҮҶжөӢиҜ•пјҹ
жҲ‘们дҪҝз”Ё JS SDK v3 е’Ң v2 еҜ№зӨәдҫӢеә”з”ЁзЁӢеәҸзҡ„ Lambda еҶ·еҗҜеҠЁж—¶й—ҙиҝӣиЎҢдәҶеҹәеҮҶжөӢиҜ•гҖӮеҫҲеӨ§дёҖйғЁеҲҶзҡ„ JS SDK е®ўжҲ·д»Һ Lambda еҸ‘йҖҒиҜ·жұӮпјҢи®ёеӨҡдәәеҜ№еҶ·еҗҜеҠЁж—¶й—ҙеҫҲж•Ҹж„ҹгҖӮ
д»ҘдёӢ Lambda еҮҪж•°зӨәдҫӢд»Јз Ғд»Һ JS SDK v3 еҜје…Ҙ STS е®ўжҲ·з«ҜпјҢеңЁеҮҪж•°еӨ–йғЁеҲӣе»әе®ўжҲ·з«Ҝе®һдҫӢе№¶иҝ”еӣһ getCallerIdentity зҡ„ е“Қеә”гҖӮ
import { STS } from "@aws-sdk/client-sts";
const client = new STS();
export const handler = async () => client.getCallerIdentity();
v2 дёӯзҡ„д»Јз Ғе°Ҷд»Һ вҖңaws-sdkвҖқ еҢ…дёӯеҜје…ҘпјҢе№¶еңЁ API и°ғз”Ёж—¶и°ғз”Ё promise ()пјҢеҰӮдёӢжүҖзӨәпјҡ
import AWS from "aws-sdk";
const client = new AWS.STS();
export const handler = async () => client.getCallerIdentity().promise();
еҹәеҮҶжөӢиҜ•жҳҜй’ҲеҜ№дёүдёӘеёёи§Ғз”ЁдҫӢиҺ·еҫ—зҡ„пјҡ
- жҢүеҺҹж ·дҪҝз”Ё Lambda жҸҗдҫӣзҡ„иҪҜд»¶ејҖеҸ‘е·Ҙе…·еҢ…
- з”ЁжҲ·дёҠдј зҡ„ node_modules дёӯзҡ„ SDK жҢүеҺҹж ·
- дҪҝз”Ё esbuild жҚҶз»‘й”Җе”®
жҲ‘们дҪҝз”ЁдәҶ
иҝҷзҜҮеҚҡе®ўж–Үз« дёӯеҲҶдә«зҡ„еҹәеҮҶжөӢиҜ•йҖӮз”ЁдәҺд»Ҙ ECMAScript жЁЎеқ—ж јејҸпјҲеҸҲеҗҚ ESMпјүзј–еҶҷзҡ„ Lambda еҮҪж•°гҖӮжҲ‘们иҝҳж”¶йӣҶдәҶд»Ҙ CommonJS жЁЎеқ—ж јејҸзј–еҶҷзҡ„еҮҪж•°зҡ„еҹәеҮҶжөӢиҜ•пјҢе®ғ们жҳҜзӣёдјјзҡ„гҖӮжҲ‘们дҪҝз”Ё ESMпјҢеӣ дёәе®ғжҳҜжү“еҢ… JavaScript д»Јз Ғд»ҘдҫӣйҮҚеӨҚдҪҝз”Ёзҡ„е®ҳж–№ж ҮеҮҶж јејҸгҖӮ
жҢүеҺҹж ·дҪҝз”Ё Lambda жҸҗдҫӣзҡ„иҪҜд»¶ејҖеҸ‘е·Ҙе…·еҢ…
Lambda еңЁе…¶и®ҫзҪ®дёӯжҸҗдҫӣдәҶ SDK зүҲжң¬пјҢд»Ҙж–№дҫҝејҖеҸ‘дәәе‘ҳжһ„е»әжӣҙз®ҖеҚ•зҡ„еҮҪж•°жҲ–дҪҝз”Ё Lambda жҺ§еҲ¶еҸ°иҝӣиЎҢејҖеҸ‘гҖӮиҝҷе…Ғи®ёе®ўжҲ·и·іиҝҮеңЁ
node_modu
les ж–Үд»¶еӨ№дёӯжҸҗдҫӣ SDK е·Ҙд»¶гҖӮиҷҪз„¶иҝҷжҳҜжңҖж–№дҫҝзҡ„з”ЁдҫӢпјҢдҪҶе®ғе№¶дёҚжҳҜжҖ§иғҪжңҖй«ҳзҡ„з”ЁдҫӢгҖӮ
еңЁжӯӨеҹәеҮҶжөӢиҜ•и®ҫзҪ®дёӯпјҢеә”з”ЁзЁӢеәҸд»…дҪҝз”ЁеҮҪж•°жәҗд»Јз ҒдёҠдј еҲ° LambdaгҖӮе®ғжңүдёӨдёӘж–Үд»¶зі»з»ҹиҠӮзӮ№пјҡ
-
package.jsonеҢ…еҗ«йЎ№зӣ®жё…еҚ• -
index.mjsеҢ…еҗ«еҮҪж•°жәҗд»Јз Ғ
JS SDK v3 жҳҜеңЁ Lambda жҸҗдҫӣзҡ„еёҰжңү Lambda Node.js 18 зҡ„иҪҜд»¶ејҖеҸ‘е·Ҙе…·еҢ…дёӯеј•е…Ҙзҡ„гҖӮ
иҝҷе°ұжҳҜдёәд»Җд№Ҳ v2 еҹәеҮҶжөӢиҜ•еңЁ
nodejs16.x дёҠиҝҗиЎҢпјҢиҖҢ v3 еҹәеҮҶжөӢиҜ•еңЁ nodejs18.x
дёҠиҝҗиЎҢгҖӮ
дҪҝз”Ё Lambda зҡ„ Node Runtime 14 е’Ң 16 ж—¶пјҢд»Һ NODE_PATH еҜје…Ҙзҡ„ ESM дёҚеҸҜз”ЁгҖӮдёәдәҶжөӢиҜ• Lambda еңЁ Node.js 16 дёӯжҸҗдҫӣзҡ„ JS SDK v2пјҢжҲ‘们еңЁжҲ‘们зҡ„жөӢиҜ•и®ҫзҪ®дёӯеҲӣе»әдәҶдёҖдёӘжҢҮеҗ‘ /v
ar/runtime/
node_modules зҡ„з¬ҰеҸ·й“ҫжҺҘгҖӮжңүе…іиҜҰз»ҶдҝЎжҒҜпјҢиҜ·жҹҘзңӢ GitHub и®Ёи®ә
жӯӨи®ҫзҪ®зҡ„еҹәеҮҶжөӢиҜ•иЎЁжҳҺпјҢдҪҝз”Ё Lambda жҸҗдҫӣзҡ„ SDK ж—¶пјҢдҪҝз”Ё v3 зҡ„ Lambda еҮҪж•°зҡ„еҶ·еҗҜеҠЁж—¶й—ҙжҜ”дҪҝз”Ё v2 зҡ„еҮҪж•° е°‘дәҶ 100 жҜ«з§’д»ҘдёҠ гҖӮ
зүҲжң¬ v2.1374.0 е’Ң v3.188.0 жҳҜ Lambda еңЁж’°еҶҷжң¬ж–Үж—¶жҸҗдҫӣзҡ„ SDK зүҲжң¬гҖӮLambda жҸҗдҫӣзҡ„иҪҜд»¶ејҖеҸ‘е·Ҙе…·еҢ…зүҲжң¬дјҡе®ҡжңҹжӣҙж–°дёәжңҖж–°зҡ„ејҖеҸ‘е·Ҙе…·еҢ…зүҲжң¬гҖӮ
з”ЁжҲ·дёҠдј зҡ„ node_modules дёӯзҡ„ SDK жҢүеҺҹж ·
дёҺ Lambda жҸҗдҫӣзҡ„ SDK и®ҫзҪ®зӣёжҜ”пјҢжҲ‘们й’ҲеҜ№з”ЁжҲ·дёҠдј зҡ„ node_modules зҡ„еҹәеҮҶжөӢиҜ•и®ҫзҪ®жңүд»ҘдёӢеҸҳеҢ–пјҡ
- node_modules зӣ®еҪ•дёӯж·»еҠ дәҶ SDK е·Ҙд»¶гҖӮ
-
иҝҷдёӨдёӘ Lambda еҮҪж•°йғҪеңЁ nodejs18.x дёҠиҝӣиЎҢдәҶеҹәеҮҶжөӢиҜ• -
/var/runtime/node_modules зҡ„з¬ҰеҸ·й“ҫжҺҘе·ІеҲ йҷӨгҖӮ
жӯӨи®ҫзҪ®зҡ„еҹәеҮҶжөӢиҜ•иЎЁжҳҺпјҢдёҺдҪҝз”Ё v2 зҡ„еҮҪж•°зӣёжҜ”пјҢдҪҝз”Ё v3 зҡ„ Lambda еҮҪж•°зҡ„еҶ·еҗҜеҠЁж—¶й—ҙ еҮҸе°‘дәҶеӨ§ зәҰ 140 жҜ«з§’ гҖӮLambda еҮҪж•°зҡ„еӨ§е°Ҹд№ҹеҮҸе°‘дәҶеӨ§ зәҰ 10 .8 MBгҖӮ
еҜ№дәҺиҝҷз§Қи®ҫзҪ®пјҢйў„и®ЎжүҖжңүжңҚеҠЎзҡ„ж”№иҝӣе°ҶжҢҒз»ӯи¶…иҝҮ100msгҖӮLambda еҮҪж•°зҡ„еӨ§е°Ҹе·®ејӮе°ҶеҸ–еҶідәҺжңҚеҠЎе®ўжҲ·з«ҜпјҢдҪҶеңЁ v3 дёӯдјҡжӣҙе°ҸпјҢдёҺ v2 зӣёжҜ”пјҢv3 жҳҜжЁЎеқ—еҢ–зҡ„гҖӮ
дҪҝз”Ё esbuild жҚҶз»‘й”Җе”®
жҚҶз»‘еҷЁжҳҜдёҖз§Қе°ҶеӨҡдёӘжЁЎеқ—жҲ–ж–Үд»¶з»„еҗҲжҲҗеҚ•дёӘж–Үд»¶зҡ„е·Ҙе…·пјҢйҖҡеёёз”ЁдәҺдјҳеҢ– Web еә”з”ЁзЁӢеәҸзҡ„дәӨд»ҳе’Ңжү§иЎҢгҖӮжҚҶз»‘еҷЁйҖҡеёёз”ЁдәҺеүҚз«ҜејҖеҸ‘пјҢзү№еҲ«жҳҜеҹәдәҺ JavaScript зҡ„йЎ№зӣ®пјҢдҪҶе®ғ们д№ҹеҸҜд»Ҙз”ЁдәҺеҗҺз«ҜејҖеҸ‘гҖӮ
жҲ‘们дёҺ esbuild жҚҶз»‘еңЁдёҖиө·зҡ„еҹәеҮҶжөӢиҜ•и®ҫзҪ®дҪҝз”Ё v2 е’Ң v3 дёӯзҡ„е‘ҪеҗҚеҜје…ҘпјҢе№¶дҪҝз”Ёд»ҘдёӢе‘Ҫд»ӨжҚҶз»‘еә”з”ЁзЁӢеәҸпјҡ
esbuild source.mjs --bundle --platform=node --format=esm --main-fields=module,main
иҰҒеҲӣе»ә v2 зҡ„ ESM жҚҶз»‘еҢ…пјҢжҲ‘们йңҖиҰҒдҪҝз”Ёд»ҘдёӢ esbuild йҖүйЎ№дёәйңҖиҰҒжҸҗдҫӣ polyfillпјҡ
жңүе…ідёәд»Җд№ҲйңҖиҰҒиҝҷж ·еҒҡзҡ„иҜҰз»ҶдҝЎжҒҜпјҢиҜ·еҸӮйҳ…
жӯӨи®ҫзҪ®зҡ„еҹәеҮҶжөӢиҜ•иЎЁжҳҺпјҢдёҺ esbuild жҚҶз»‘еңЁдёҖиө·ж—¶пјҢдҪҝз”Ё v3 зҡ„ Lambda еҮҪж•°зҡ„еҶ·еҗҜеҠЁж—¶й—ҙжҜ”дҪҝз”Ё v2 зҡ„еҮҪж•° е°‘дәҶ 400 жҜ«з§’д»ҘдёҠ гҖӮLambda еҮҪж•°зҡ„еӨ§е°Ҹд№ҹжңү 2 MB зҡ„е·®ејӮгҖӮ
дёәдәҶеҮҸе°Ҹ v2 дёӯзҡ„еҮҪж•°еӨ§е°ҸпјҢдёҖдәӣе®ўжҲ·дҪҝз”ЁдәҶ STS е®ўжҲ·з«Ҝзҡ„ж·ұеәҰеҜје…ҘпјҢеҰӮдёӢжүҖзӨәпјҡ
import STS from "aws-sdk/clients/sts.js";
еҪ“жҲ‘们еңЁж·ұеәҰеҜје…Ҙ STS е®ўжҲ·з«Ҝж—¶иҝҗиЎҢеҹәеҮҶжөӢиҜ•ж—¶пјҢv3 дёӯзҡ„еҶ·еҗҜеҠЁж—¶й—ҙд»Қз„¶зј©зҹӯдәҶеӨ§зәҰ 10 жҜ«з§’гҖӮе°Ҫз®Ўе…·жңүж·ұеәҰеҜје…ҘеҠҹиғҪзҡ„жҚҶз»‘v2еҮҪж•°жҜ”е…·жңүе…ЁеұҖеҜје…ҘеҠҹиғҪзҡ„зүҲжң¬е°ҸпјҢдҪҶжҚҶз»‘зҡ„v3еҠҹиғҪд»ҚеҮ д№ҺжҳҜе…¶еӨ§е°Ҹзҡ„дёҖеҚҠгҖӮ
йҖҡиҝҮдҪҝз”ЁеёҰжңүе‘Ҫд»ӨеҜ№иұЎзҡ„еҮҶзі»з»ҹе®ўжҲ·з«ҜпјҢд№ҹеҸҜд»ҘиҝӣдёҖжӯҘеҮҸе°Ҹ v3 дёӯзҡ„еҢ…еӨ§е°ҸгҖӮеңЁе№•еҗҺпјҢиҝҷе°ҶеҜје…ҘдёҖдёӘиҪ»йҮҸзә§е®ўжҲ·з«ҜпјҢе№¶дё”д»…еҜје…ҘжӮЁзҡ„еә”з”ЁзЁӢеәҸйңҖиҰҒи°ғз”Ёзҡ„ж“ҚдҪңгҖӮжӯӨз»“жһ„з”ҡиҮіеҸҜд»Ҙз”ЁдәҺ Lambda еҮҪж•°д№ӢеӨ–зҡ„жЎҲдҫӢгҖӮ
import { STSClient, GetCallerIdentityCommand } from "@aws-sdk/client-sts";
const client = new STSClient();
export const handler = async () => client.send(new GetCallerIdentityCommand({}));
еңЁ v3 дёӯдҪҝз”Ё STS е®ўжҲ·з«Ҝзҡ„е‘Ҫд»ӨеҜје…ҘиҝҗиЎҢеҹәеҮҶжөӢиҜ•ж—¶пјҢжҚҶз»‘зҡ„еә”з”ЁзЁӢеәҸеӨ§е°ҸеҮҸе°‘дәҶзәҰ 2KBгҖӮеҶ·еҗҜеҠЁж—¶й—ҙзј©зҹӯдәҶзәҰ 3 жҜ«з§’гҖӮ
жҲ‘们еҸҜд»Ҙд»ҺиҝҷдәӣеҹәеҮҶжөӢиҜ•дёӯеӯҰеҲ°д»Җд№Ҳпјҹ
е°ұеёёи§Ғз”ЁдҫӢдёӯзҡ„ Lambda еҶ·еҗҜеҠЁж—¶й—ҙиҖҢиЁҖпјҢJS SDK v3 жҜ” v2 жӣҙеҝ«гҖӮ
жӮЁе®һзҺ°еә”з”ЁзЁӢеәҸзҡ„ж–№ејҸдјҡеҪұе“ҚжҖ§иғҪгҖӮеҰӮжһңжӮЁеңЁ Lambda дёҠдҪҝз”Ё JS SDK е№¶дё”еҜ№еҶ·еҗҜеҠЁж—¶й—ҙеҫҲж•Ҹж„ҹпјҢиҜ·дҪҝз”ЁеёҰжңүеҮҶзі»з»ҹе®ўжҲ·з«Ҝе’Ңе‘Ҫд»ӨеҜ№иұЎзҡ„ JS SDK v3пјҢе№¶еңЁйғЁзҪІеҲ° Lambda д№ӢеүҚжҚҶз»‘жӮЁзҡ„еә”з”ЁзЁӢеәҸгҖӮжӯӨи®ҫзҪ®зҡ„еҶ·еҗҜеҠЁж—¶й—ҙиҫғзҹӯпјҢеӣ дёә Node.js еҸӘйңҖиҰҒиҜ»еҸ–дёҖдёӘж–Үд»¶пјҢе…¶дёӯеҢ…еҗ«еә”з”ЁзЁӢеәҸзҡ„е®Ңж•ҙжәҗд»Јз ҒгҖӮж— йңҖиҠұиҙ№ж—¶й—ҙиҝӣиЎҢжЁЎеқ—и§ЈжһҗжҲ–иҜ»еҸ–еӨҡдёӘж–Үд»¶гҖӮеҪ“жӮЁзҡ„еә”з”ЁзЁӢеәҸдҪҝз”Ё v3 ж—¶пјҢеҢ…еӨ§е°Ҹдјҡжӣҙе°ҸпјҢеӣ дёә v3 жҳҜжЁЎеқ—еҢ–зҡ„гҖӮ
JS ејҖеҸ‘е·Ҙе…·еҢ…еӣўйҳҹе»әи®®дҪҝз”Ё
dling.externalModules й…ҚзҪ®дёӯдј йҖ’дёҖдёӘз©әж•°з»„пјҢиҝҷж ·е®ғе°ұеҸҜд»ҘжҚҶз»‘
ејҖеҸ‘е·Ҙе…·еҢ…дәҶгҖӮжңүе…іиҜҰз»ҶдҝЎжҒҜпјҢиҜ·жҹҘзңӢ
еҸҚйҰҲ
иҰҒејҖе§ӢдҪҝз”Ё JS SDK v3пјҢиҜ·и®ҝй—®жҲ‘们зҡ„
*еүҚиҝ°зү№е®ҡдәҡ马йҖҠдә‘з§‘жҠҖз”ҹжҲҗејҸдәәе·ҘжҷәиғҪзӣёе…ізҡ„жңҚеҠЎд»…еңЁдәҡ马йҖҠдә‘з§‘жҠҖжө·еӨ–еҢәеҹҹеҸҜз”ЁпјҢдәҡ马йҖҠдә‘з§‘жҠҖдёӯеӣҪд»…дёәеё®еҠ©жӮЁеҸ‘еұ•жө·еӨ–дёҡеҠЎе’Ң/жҲ–дәҶи§ЈиЎҢдёҡеүҚжІҝжҠҖжңҜйҖүжӢ©жҺЁиҚҗиҜҘжңҚеҠЎгҖӮ