å±ç®¡ç
äºå½æ°å±ï¼Layerï¼æ¯ä¸ç§ä»£ç å ±äº«æºå¶ï¼å¯ä»¥å°ä¾èµåºãå ¬å ±ä»£ç æä»¶çèµæºç¬ç«ç®¡çï¼å®ç°å¤ä¸ªå½æ°é´ç代ç å¤ç¨ã
ä»ä¹æ¯å±â
屿¯äºå½æ°çä¸ä¸ªéè¦ç¹æ§ï¼å 许æ¨å°ä¾èµåºãè¿è¡æ¶ç¯å¢ãé ç½®æä»¶çæå æç¬ç«çå±ï¼ä¾å¤ä¸ªå½æ°å ±äº«ä½¿ç¨ã使ç¨å±å¯ä»¥ï¼
- åå°é¨ç½²å ä½ç§¯ï¼å°ä¾èµåºä»å½æ°ä»£ç ä¸å离ï¼ä¿æé¨ç½²å è½»éå
- æé«å¼åæçï¼å ¬å ±ä»£ç åªéç»´æ¤ä¸ä»½ï¼å¤ä¸ªå½æ°å¯å¤ç¨
- æ¯æ å¨çº¿ç¼è¾ï¼å¯¹äº Node.jsãPython å PHP 彿°ï¼ä»£ç å ä¿æå¨ 10MB 以䏿¶å¯å¨æ§å¶å°å¨çº¿ç¼è¾
å·¥ä½åçâ
å±çå建ä¸çæ¬ç®¡çâ
- æ¯ä¸ªå±é½æç¬ç«ççæ¬ç®¡çï¼åå»ºå±æ¶ä¼çæå¯¹åºççæ¬å·
- å±çå 容以å缩å å½¢å¼åå¨ï¼æ¯æçæ¬è¿ä»£ååæ»
- å±å¯ä»¥è®¾ç½®å ¼å®¹çè¿è¡ç¯å¢ï¼ç¡®ä¿ä¸å½æ°è¿è¡æ¶å¹é
å±çç»å®æºå¶â
- 彿°ä¸å±æç §å ·ä½çæ¬è¿è¡ç»å®ï¼ç¡®ä¿è¿è¡ç¯å¢çç¨³å®æ§
- åä¸ªå½æ°æå¤æ¯æç»å® 5 个å±
- ç»å®æ¶å¯ä»¥æå®å±çå 载顺åº
è¿è¡æ¶å è½½æµç¨â
å½ç»å®äºå±ç彿°è¢«è§¦åæ¶ï¼ç³»ç»ä¼æä»¥ä¸æµç¨å è½½ï¼
- 彿°ä»£ç å è½½ï¼å½æ°ä»£ç è§£åè³
/var/user/ç®å½ - å±å
容å è½½ï¼ææç»å®çå±æé¡ºåºè§£åè³
/optç®å½ - æä»¶è®¿é®è§åï¼
- 屿 ¹ç®å½çæä»¶ï¼éè¿
/opt/æä»¶åè®¿é® - å±åç®å½çæä»¶ï¼éè¿
/opt/ç®å½å/æä»¶å访é®
- 屿 ¹ç®å½çæä»¶ï¼éè¿
å¤å±å 载顺åºâ
å½å½æ°ç»å®å¤ä¸ªå±æ¶ï¼
- æç»å®æ¶è®¾ç½®çåºå·ä»å°å°å¤§ä¾æ¬¡å è½½
- åå è½½çå±ä¼è¦çå å è½½å±ä¸çååæä»¶
- ææå±å¨å½æ°å®ä¾å¯å¨å宿å è½½ï¼å½æ°åå§åæ¶å³å¯ä½¿ç¨
使ç¨åºæ¯ä¸æä½³å®è·µâ
éç¨åºæ¯â
- ä¾èµåºç®¡çï¼å°ç¬¬ä¸æ¹åºãSDK çä¾èµç»ä¸ç®¡ç
- å ¬å ±ä»£ç å¤ç¨ï¼å¤ä¸ªå½æ°å ±äº«çå·¥å ·ç±»ãé ç½®æä»¶
- éæèµæºåå¨ï¼æ¨¡åæä»¶ãé ç½®æä»¶çä¸å¸¸åæ´çèµæº
æä½³å®è·µâ
- Python
- Node.js
# 1. å建ä¾èµç®å½
mkdir python-layer
cd python-layer
# 2. å®è£
ä¾èµå°æå®ç®å½
pip install requests -t python/
# 3. æå
æ zip æä»¶
zip -r python-layer.zip python/

å¨å½æ°ä¸ä½¿ç¨ï¼
import requests # ç´æ¥å¯¼å
¥å±ä¸çä¾èµ
def main_handler(event, context):
response = requests.get('https://api.example.com')
return response.json()
# 1. å建ä¾èµç®å½
mkdir nodejs-layer
cd nodejs-layer
# 2. åå§åå¹¶å®è£
ä¾èµ
npm init -y
npm install axios lodash
# 3. æå
node_modules
zip -r nodejs-layer.zip node_modules/
å¨å½æ°ä¸ä½¿ç¨ï¼
const axios = require('axios'); // ç´æ¥å¼ç¨å±ä¸çä¾èµ
const _ = require('lodash');
exports.main_handler = async (event, context) => {
const response = await axios.get('https://api.example.com');
return _.pick(response.data, ['id', 'name']);
};
å±ç»æå»ºè®®â
layer.zip
âââ python/ # Python ä¾èµç®å½
â âââ requests/
â âââ urllib3/
âââ lib/ # å
±äº«åºç®å½
â âââ utils.py
âââ config/ # é
ç½®æä»¶ç®å½
âââ settings.json
注æäºé¡¹â
- å±ä¸çæä»¶ä¼è§£åå°
/optç®å½ï¼å½æ°æ§è¡æé´å¯ç´æ¥è®¿é® - å¤ä¸ªå±ç»å®æ¶æåºå·é¡ºåºåå¹¶ï¼ååæä»¶ä¼è¢«åºå·è¾å¤§çå±è¦ç
- å±çæ»å¤§å°éå¶ä¸º 50MBï¼å»ºè®®åçè§åå±çå 容
- å±çæ¬ä¸æ¦å建ä¸å¯ä¿®æ¹ï¼éè¦æ´æ°æ¶è¯·å建æ°çæ¬
æä½æåâ
å建å±â
-
è¿å ¥å±ç®¡ç页é¢
è¿å ¥ äºå¼åæ§å¶å°/å±ç®¡ç
-
é ç½®å±ä¿¡æ¯
ç¹å»ãæ°å»ºãï¼å¡«å以ä¸ä¿¡æ¯ï¼
é 置项 说æ å±åç§° èªå®ä¹å±åç§°ï¼å»ºè®®ä½¿ç¨ææä¹çå½å æè¿° å±çç¨éåå 容æè¿°ï¼ä¾¿äºå¢éåä½ å±ä»£ç ä¸ä¼ zip å缩å ï¼æå¤§æ¯æ 500MB è¿è¡ç¯å¢ éæ©å ¼å®¹çè¿è¡æ¶ç¯å¢ï¼æå¤ 8 个 -
ä¸ä¼ å±ä»£ç
ç¹å»ãä¸ä¼ ãæé®ï¼éæ©åå¤å¥½ç zip å缩å ï¼ç¡®è®¤åç¹å»ãç¡®å®ã宿å建ã
ç»å®å±å°å½æ°â
-
éæ©ç®æ 彿°
å¨äºå½æ°å表ä¸éæ©éè¦ç»å®å±ç彿°ï¼è¿å ¥å½æ°è¯¦æ 页ã
-
è¿å ¥å±ç®¡ç
忢å°ãå±ç®¡çãæ ç¾é¡µï¼ç¹å»ãç»å®ãæé®ã

-
éæ©å±çæ¬
å¨å¼¹åºçªå£ä¸éæ©è¦ç»å®çå±åç§°åçæ¬ï¼

- å¯ä»¥åæ¶ç»å®å¤ä¸ªå±ï¼æå¤ 5 个ï¼
- å¯ä»¥è°æ´å±çå 载顺åº
- å»ºè®®éæ©ç¨³å®çå±çæ¬
-
确认ç»å®
确认é ç½®æ 误åï¼ç¹å»ãç¡®å®ã宿ç»å®ã
管çå±çæ¬â
- æ¥ççæ¬åå²ï¼å¨å±è¯¦æ 页坿¥çææåå²çæ¬
- å建æ°çæ¬ï¼ä¿®æ¹å±å 容æ¶å建æ°çæ¬ï¼ä¿æååå ¼å®¹
- å é¤çæ¬ï¼å é¤ä¸å使ç¨ççæ¬ï¼éæ¾åå¨ç©ºé´
常è§é®é¢â
屿 æ³æ£å¸¸å è½½â
å¯è½åå ï¼
- å±çè¿è¡ç¯å¢ä¸å½æ°ä¸å¹é
- å±æä»¶ç»æä¸æ£ç¡®
- å±å¤§å°è¶ è¿éå¶
è§£å³æ¹æ¡ï¼
- æ£æ¥å±çå ¼å®¹è¿è¡ç¯å¢è®¾ç½®
- ç¡®è®¤å±æä»¶ææ£ç¡®ç®å½ç»ææå
- ä¼åå±å å®¹ï¼æ§å¶å¨ 500MB 以å
ä¾èµåºå¯¼å ¥å¤±è´¥â
å¯è½åå ï¼
- Python ä¾èµæªå®è£ å°æ£ç¡®ç®å½
- Node.js 模åè·¯å¾ä¸æ£ç¡®
è§£å³æ¹æ¡ï¼
- Pythonï¼ä½¿ç¨
pip install -t python/å®è£ å° python ç®å½ - Node.jsï¼ç¡®ä¿ node_modules å¨å±çæ ¹ç®å½