常è§é®é¢
æ§è½ç¸å ³â
è°ç¨äºå½æ°èæ¶è¾é¿â
å¯ä»¥éè¿ææ¥äºå½æ°æ¥å¿åæèæ¶ä½ç½®ã妿æ¥å¿å
å« Coldstart: xxxms ç±»æ¥å¿ï¼å为äºå½æ°å·å¯å¨èæ¶ãå¦æå¸æè§£å³è¯¥é¨åèæ¶ï¼å¯ä»¥åè é¢ç½®å¹¶åã
äºå½æ°æ§è¡è¶ æ¶æä¹å¤çï¼â
è¶ æ¶å®¢æ·ç«¯ä¼ç´æ¥æå¼è¿æ¥å¹¶æ¥éï¼å»ºè®®æ§å¶å½æ°æ§è¡æ¶é´ï¼å°½éä¸è¦æèæ¶é¿çæä½æ¾å¨å®¢æ·ç«¯ç´æ¥è°ç¨çäºå½æ°å ã
妿éè¦å¨äºå½æ°æ§è¡ä¸äºé¿èæ¶çå¤çæä¹åï¼â
为äºä¿è¯å®¢æ·ç«¯çä½éªï¼ä¸å è®¸ç´æ¥è°ç¨é¿èæ¶çäºå½æ°ã
- 建议å¨äºæ§å¶å°è°æ´ä¸ºéè¦çè¶ æ¶æ¶é´ï¼ä¸é为 60sï¼ï¼å¨äºå½æ°å ä½¿ç¨ callback() è¿åæåï¼å®¢æ·ç«¯ä¸çå¾ æ§è¡ç»æã
- äºå½æ°ä¼å¨è¶ æ¶æ¶é´å ç»§ç»æ§è¡ç´å°å®æ¯æè¶ æ¶ï¼å°æ§è¡ç»æåå ¥æ°æ®åºçå卿å¡ï¼åå¨å®¢æ·ç«¯è·åè¯¥ç»æã
é ç½®ç¸å ³â
è°æ´äºå½æ°å åé ç½®ä¸çæâ
äºå½æ°é
置对 $LATEST çæ¬çæãå¦æè¯·æ±ç䏿¯ $LATEST çæ¬ï¼åé
置修æ¹ä¸ä¼çæã
è§£å³æ¹æ¡ï¼
- ç¡®ä¿è¯·æ±çæ¯
$LATESTçæ¬ - æè
åºäº
$LATESTçæ¬å叿°çæ¬ï¼æ°çæ¬ä¼ä½¿ç¨å½åçå¿«ç §ï¼å å«ä»£ç åé ç½®ï¼è¶ æ¶æ¶é´ãç¯å¢åéãå åé ç½®çï¼
äºå½æ°å 置模åæä¹ä½¿ç¨ï¼â
- äºå½æ°å 置模åå·²ç»éæäºè¿è¡ç¯å¢ï¼å¯ä»¥ç´æ¥ä½¿ç¨ã
- 妿å 置模åççæ¬ä¸è½æ»¡è¶³éæ±ï¼å¯ä»¥èªè¡å®è£ 模åå°äºå½æ°å ï¼é»è®¤ä¼è¢«ä¼å 使ç¨ã
ç®åå·²æ¯æçå 置模å为 request 2.87.1 ã
äºå½æ°å æä¹ä¿åå¯é¥çé 置信æ¯â
äºå½æ°æ¯æ ç¶æçï¼é 置信æ¯å»ºè®®åå¨å¨äºå¼åçæ°æ®åºæå¡
é¨ç½²ç¸å ³â
为ä»ä¹äºå½æ°æ´æ°æ¶ï¼è¿å exit status 11ï¼â
è¯·æ£æ¥ä¸ä¸å½æ°çæå æ¹å¼åå ¥å£æ¹æ³ã
- äºå½æ°å建æ¶ï¼é»è®¤æ§è¡æ¹æ³æ¯ index.main ï¼å ¶å ¥å£æä»¶ä¸º index.js ï¼ä¸ index.js å¿ é¡»ç¨ export æ´é²åº main æ¹æ³ã
- äºå½æ°æ´æ°æ¶ï¼å¦æéæ©ç¨ zip å ä¸ä¼ ï¼æå çæ¹å¼éè¦æ³¨æï¼è¦ä¿è¯ zip å è§£ååç第ä¸çº§å å®¹å¿ é¡»å å«å ¥å£æä»¶ï¼å¸¸è§çé误æå æ¹å¼æ¯ï¼å°æä¸ªäºå½æ°ä»£ç æ¾å¨æä¸ªæä»¶å¤¹å ï¼å¹¶é对è¿ä¸ªæä»¶å¤¹è¿è¡å缩ï¼è¿æ ·è§£ååºæ¥çæä»¶æ¯ä¸ä¸ªæä»¶å¤¹ï¼ä¸å å«å ¥å£æä»¶ index.js ï¼ã
Windows ç¯å¢ä¸æå äºå½æ°å±é¨ç½²å¤±è´¥â
å¨ Windows ç¯å¢ä¸æå
äºå½æ°å±ï¼Layerï¼ç zip æä»¶åï¼é¨ç½²å°äºå½æ°æ¶å¯è½ä¼éå° An internal error has occurred æ¥éã
é®é¢ç°è±¡
å¨ Windows ç³»ç»ä¸ä½¿ç¨ç³»ç»èªå¸¦çå缩工å
·æ PowerShell ç Compress-Archive å½ä»¤æå
äºå½æ°å±åï¼ä¸ä¼ é¨ç½²æ¶æ¥éï¼
彿°æ´æ°å¤±è´¥
An internal error has occurred. Retry your requestï¼ but if the problem persistsï¼ contact us with details
é®é¢åå
Windows ç³»ç»æå
ç zip æä»¶ï¼å
é¨çè·¯å¾åé符使ç¨çæ¯åææ \ï¼èäºå½æ°çæå»ºç¯å¢æ¯ Linux ç³»ç»ï¼è¦æ±è·¯å¾åéç¬¦ä¸ºæ£ææ /ã
è¿ä¼å¯¼è´ Linux ç¯å¢æ æ³æ£ç¡®è§£æ zip å ä¸çæä»¶è·¯å¾ï¼ä»èå¼åé¨ç½²å¤±è´¥ã
è§£å³æ¹æ¡
æ¹æ¡ä¸ï¼ä½¿ç¨ 7-Zip æå ï¼æ¨èï¼
7-Zip æ¯ä¸ä¸ªå¼æºçåç¼©å·¥å ·ï¼æå æ¶ä¼ä½¿ç¨ Unix 飿 ¼çè·¯å¾åé符ã
- ä¸è½½å®è£ 7-Zip
- å³é®éæ©è¦æå çæä»¶å¤¹
- éæ© "7-Zip" -> "æ·»å å°å缩å "
- åç¼©æ ¼å¼éæ© "zip"
æ¹æ¡äºï¼ä½¿ç¨ WSL æå
妿已å®è£
WSL (Windows Subsystem for Linux)ï¼å¯ä»¥å¨ WSL ç¯å¢ä¸ä½¿ç¨ zip å½ä»¤æå
ï¼
# è¿å
¥ WSL ç¯å¢
wsl
# è¿å
¥å±æä»¶æå¨ç®å½
cd /mnt/c/your/layer/path
# ä½¿ç¨ zip å½ä»¤æå
zip -r layer.zip ./*
æ¹æ¡ä¸ï¼ä½¿ç¨ Git Bash æå
Git for Windows èªå¸¦ç Git Bash ä¹å¯ä»¥ä½¿ç¨ Unix 飿 ¼ç zip å½ä»¤ï¼
# æå¼ Git Bashï¼è¿å
¥å±æä»¶ç®å½
cd /c/your/layer/path
# æå
zip -r layer.zip ./*
è°è¯ç¸å ³â
äºå½æ°æµè¯æ¶ï¼é¨åæ¥å¿ä¸¢å¤±äºï¼â
- äºå½æ°æµè¯æ¶ï¼å¦æä»¥åæ¥è°ç¨çæ¹å¼ï¼è¶ æ¶æ¶é´å°äº 20 ç§ï¼ï¼è¿åçæ¥å¿æå¤ä¸º 4kï¼è¶ è¿ 4k çæ¥å¿ä¸æ¾ç¤ºã
- 妿以弿¥è°ç¨çæ¹å¼ï¼è¶ æ¶æ¶é´å¤§äºæçäº 20 ç§ï¼ï¼è¿åçæ¥å¿æå¤ä¸º 6Mï¼è¶ è¿ 6M çæ¥å¿ä¸æ¾ç¤ºã
为ä»ä¹äºå½æ°ä¸è°ç¨å ¶ä»äºå½æ°æ¥é socket timeoutï¼ä½æ¯è¢«è°ç¨çäºå½æ°å®é æ¯ææ§è¡æåå¹¶ä¸è¿åæ°æ®çï¼â
æ¨å¯å¨é¡µé¢ä¸ç彿°é ç½®-åºæ¬ä¿¡æ¯ä¸ï¼ä¸ºäºå½æ°è®¾ç½®è¶ æ¶æ¶é¿ãåæ¶ï¼å¦æä½¿ç¨å° SDKï¼SDK é»è®¤çè¶ æ¶æ¶é´æ¯ 15 ç§ï¼ä¸¤è 以æçæ¶é´ä¸ºåã
使ç¨ç¸å ³â
äºå½æ°å¦ä½è°ç¨äºå½æ°â
ç®ååªå¯ä»¥éè¿äºå¼åæä¾ç SDK è°ç¨ï¼æ²¡æå ¶å®æ¹å¼
ä¸åçäºå½æ°å¯ä»¥å ±ç¨ä»£ç æä»¶ï¼ç®å½ï¼åâ
æªä¸çº¿
Node.js äºå½æ°åæ¶æ¯æå¼æ¥å忥忳åâ
æ¯çï¼æ¨è使ç¨åæ¥ï¼async/awaitï¼åæ³ã
äºå½æ° HTTP 访é®é 置身份éªè¯åæ¥ MISSING_CREDENTIALS é误â
å½äºå½æ°é
ç½®äº HTTP è®¿é®æå¡åï¼å¨ç¯å¢é
ç½®ä¸å¯¹è¯¥äºå½æ°å¼å¯èº«ä»½è®¤è¯ï¼ä¼å¯¼è´åå
å¯ç´æ¥è®¿é®ç URL æ¥ MISSING_CREDENTIALS é误ã
é®é¢ç°è±¡
- äºå½æ°å·²é ç½® HTTP è®¿é®æå¡è·¯å¾ï¼å¯éè¿ URL ç´æ¥è®¿é®
- å¨ç¯å¢é ç½®ä¸å¯¹è¯¥äºå½æ°å¼å¯èº«ä»½è®¤è¯å
- 访é®è¯¥ URL è¿å
MISSING_CREDENTIALSé误
é®é¢åå
å¼å¯èº«ä»½éªè¯åï¼ææè¯·æ±é½éè¦æºå¸¦ææç身份åè¯ï¼å¦ Access Token æ API Keyï¼æè½è®¿é®äºå½æ°ãè¿æ¯äºå¼åçå®å ¨æºå¶ï¼ç¨äºä¿æ¤äºå½æ°ä¸è¢«æªææè®¿é®ã
è§£å³æ¹æ¡
æ¹æ¡ä¸ï¼ä½¿ç¨ Access Token 认è¯
å¨è¯·æ±å¤´ä¸æºå¸¦ Access Tokenï¼
// å
éè¿ç»å½è·å Access Token
const response = await fetch(
"https://your-env-id.api.tcloudbasegateway.com/v1/functions/your-function-name",
{
headers: {
Authorization: "Bearer your-access-token",
},
},
);
Access Token è·åæ¹æ³è¯·åè AccessToken ä½¿ç¨æå
æ¹æ¡äºï¼ä½¿ç¨ API Key 认è¯
å¦ææ¯æå¡ç«¯è°ç¨ï¼å¯ä»¥ä½¿ç¨ API Keyï¼
const response = await fetch(
"https://your-env-id.api.tcloudbasegateway.com/v1/functions/your-function-name",
{
headers: {
Authorization: "Bearer your-api-key",
},
},
);
æ¹æ¡ä¸ï¼ä½¿ç¨ Publishable Key 认è¯
妿æ¯å®¢æ·ç«¯å ¬å¼è®¿é®åºæ¯ï¼å¯ä»¥ä½¿ç¨ Publishable Keyï¼
const response = await fetch(
"https://your-env-id.api.tcloudbasegateway.com/v1/functions/your-function-name",
{
headers: {
Authorization: "Bearer your-publishable-key",
},
},
);
æ¹æ¡åï¼å ³é身份éªè¯
å¦æè¯¥äºå½æ°éè¦å ¬å¼è®¿é®ï¼å¯ä»¥å ³é身份éªè¯ï¼
- ç»å½ äºå¼åæ§å¶å°
- è¿å ¥ãç¯å¢ã-ãHTTP è®¿é®æå¡ã
- æ¾å°å¯¹åºçäºå½æ°è·¯å¾ï¼å ³é身份éªè¯
å ³é身份éªè¯æå³çä»»ä½äººé½å¯ä»¥è®¿é®è¯¥äºå½æ°ï¼è¯·ç¡®ä¿äºå½æ°å 鍿éå½çå®å ¨æ ¡éªé»è¾ã