濡備綍浣跨敤鑷畾涔?Lambda 闆嗘垚閫氳繃 API Gateway 灏嗚嚜瀹氫箟鏍囧ご浼犻€掔粰 Lambda 鍑芥暟锛?/h1>

涓婃鏇存柊鏃堕棿锛?020 骞?1 鏈?8 鏃?/i>

濡備綍鍒涘缓 AWS Lambda 鍑芥暟鏉ュ鐞嗛€氳繃 Amazon API Gateway API 浼犻€掔殑娑堟伅鐨勮嚜瀹氫箟鏍囧ご锛?br />

绠€鐭弿杩?/h2>

榛樿鎯呭喌涓嬶紝Lambda 鍑芥暟浠呮彁鍙?API Gateway API 鎺ユ敹鍒扮殑璇锋眰姝f枃銆傝灏嗚嚜瀹氫箟鏍囧ご浠?API Gateway API 浼犻€掑埌 Lambda 鍑芥暟锛岄渶浣跨敤 curl 浠?a href="https://docs.aws.amazon.com/apigateway/latest/developerguide/apigateway-override-request-response-parameters.html" target="_blank">姝f枃鏄犲皠妯℃澘灏嗘秷鎭彂閫佸埌 API锛屼互鎻愬彇娣诲姞鍒版秷鎭腑鐨勬墍鏈夎嚜瀹氫箟鏍囧ご銆?/p>

API 灏嗘洿鏂板悗鐨勬秷鎭彂閫佺粰 Lambda 鍑芥暟浠ュ鐞嗘爣澶达紝骞朵粠鍘熷娑堟伅涓繑鍥炰竴涓垨澶氫釜鏍囧ご鍊笺€?br />

瑙e喅鏂规硶

閰嶇疆 IAM 鏉冮檺

涓?Lambda 鍜?API Gateway 閰嶇疆鎵€闇€鐨?AWS Identity and Access Management (IAM) 鏉冮檺銆傛湁鍏虫洿澶氫俊鎭紝璇峰弬闃?a href="https://docs.aws.amazon.com/apigateway/latest/developerguide/permissions.html" target="_blank">浣跨敤 IAM 鏉冮檺鎺у埗瀵?API 鐨勮闂?/a>銆?/p>

涓轰簡杩涜娴嬭瘯锛屽垱寤轰竴涓?IAM 瑙掕壊骞堕檮鍔?AWS 鎵樼绛栫暐 AmazonAPIGatewayInvokeFullAccess 鍜?AmazonAPIGatewayPushToCloudWatchLogs銆?/p>

鍒涘缓 Lambda 鍑芥暟

1.鎵撳紑 Lambda 鎺у埗鍙?/a>銆?/p>

2.濡傛灉鎮ㄦ槸鍒濇浣跨敤 Lambda锛岃閫夋嫨绔嬪嵆寮€濮嬩娇鐢?/b>銆傚惁鍒欒閫夋嫨鍒涘缓鍑芥暟銆傛鏃跺皢鎵撳紑鍒涘缓鍑芥暟椤甸潰锛屾樉绀?b>浠庡ご寮€濮嬪垱寤?/b>閫夐」銆?/p>

3.閫夋嫨浠庡ご寮€濮嬪垱寤?/b>鍚庯紝鍦?b>鍩烘湰淇℃伅涓嬫墽琛屼互涓嬫搷浣滐細
涓?b>鍑芥暟鍚嶇О
杈撳叆涓€涓悕绉帮紝渚嬪 CustomHeaders銆?br /> 鍦?b>杩愯鏃?/b>涓€夋嫨 Node.js 12.x銆?/p>

4.鍦?b>鏉冮檺涓嬶紝灞曞紑閫夋嫨鎴栧垱寤烘墽琛岃鑹?/b>銆?/p>

5.閫夋嫨浣跨敤鐜版湁瑙掕壊銆?/p>

6.鍦?b>鐜版湁瑙掕壊涓紝閫夋嫨鎮ㄤ箣鍓嶅垱寤虹殑鎵ц瑙掕壊銆?/p>

7.閫夋嫨鍒涘缓鍑芥暟銆?/p>

8.鍦?b>閰嶇疆绐楁牸鐨?b>鍑芥暟浠g爜涓嬶紝鐢ㄤ互涓嬬ず渚嬪嚱鏁颁唬鐮佹浛鎹?a href="https://docs.aws.amazon.com/lambda/latest/dg/code-editor.html" target="_blank">缂栬緫鍣ㄧ獥鏍?/a>涓殑浠g爜 (index.js)锛?br />

exports.handler = (event, context, callback) => {
// TODO implement
callback(null, "This message header was processed by Amazon " +event.headers);
};

9.閫夋嫨淇濆瓨銆?/p>

鏈夊叧鏇村淇℃伅锛岃鍙傝浣跨敤 Node.js 鏋勫缓 Lambda 鍑芥暟銆?/p>

鍒涘缓 API Gateway API

1.鎵撳紑 API Gateway 鎺у埗鍙?/a>銆?/p>

2.濡傛灉鎮ㄥ湪鎺у埗鍙颁腑宸叉湁浠讳綍 API锛岄€夋嫨鍒涘缓 API銆傚鏋滄病鏈夛紝鍒欑户缁墽琛屼笅涓€姝ラ銆?/p>

3.瀵逛簬閫夋嫨 API 绫诲瀷锛屽湪 REST API 涓嬶紝閫夋嫨鏋勫缓銆?/p>

4.鍦?b>鍒涘缓鏂扮殑 API 涓嬶紝閫夋嫨鏂板缓 API銆?/p>

5.鍦?b>璁剧疆涓嬶紝鎵ц浠ヤ笅鎿嶄綔锛?br /> 杈撳叆 API 鍚嶇О锛屼緥濡?SendtoLambda銆?br /> 锛堝彲閫夛級杈撳叆璇存槑銆?br /> 灏?b>缁堢鑺傜偣绫诲瀷淇濈暀涓?b>鍖哄煙銆?/p>

6.閫夋嫨鍒涘缓 API銆?/p>

閰嶇疆 API

1.鍦?API Gateway 鎺у埗鍙?/a>鐨勬柊 API 鐨?b>璧勬簮绐楁牸涓紝閫夋嫨鎿嶄綔锛岀劧鍚庨€夋嫨鍒涘缓璧勬簮銆?/p>

2.鍦?b>鏂板缓瀛愯祫婧?/b>绐楁牸涓紝鎵ц浠ヤ笅鎿嶄綔锛?br /> 杈撳叆璧勬簮鍚嶇О锛屼緥濡?HeadersResource銆?br /> 閫夋嫨鍒涘缓璧勬簮銆?/p>

3.閫夋嫨鎿嶄綔锛岀劧鍚庨€夋嫨鍒涘缓鏂规硶銆?/p>

4.浠?/headersresource 涓嬬殑涓嬫媺鑿滃崟涓€夋嫨 POST锛岀劧鍚庨€夋嫨澶嶉€夋爣璁板浘鏍囥€?/p>

5.鍦?/headersresource - POST - 璁剧疆 绐楁牸涓紝鎵ц浠ヤ笅鎿嶄綔鏉ラ厤缃偍鐨勯泦鎴愮偣锛?br /> 鍦?b>闆嗘垚绫诲瀷涓€夋嫨 Lambda 鍑芥暟銆?br /> 鍦?Lambda 鍖哄煙涓€夋嫨鎮ㄧ殑 Lambda 鍑芥暟鐨?AWS 鍖哄煙銆?br /> 瀵逛簬 Lambda 鍑芥暟锛岃杈撳叆 Lambda 鍑芥暟鐨勫悕绉般€?br /> 閫夋嫨淇濆瓨銆?/p>

6.鍦?b>鍚?Lambda 鍑芥暟娣诲姞鏉冮檺瀵硅瘽妗嗕腑锛岄€夋嫨纭畾銆?/p>

7.鍦?/headersresource - POST - 鏂规硶鎵ц绐楁牸涓紝閫夋嫨闆嗘垚璇锋眰銆?/p>

8.鍦?/headersresource 鈥?POST 鈥?闆嗘垚璇锋眰绐楁牸涓紝鎵ц浠ヤ笅鎿嶄綔锛?br /> 灞曞紑鏄犲皠妯℃澘銆?br /> 鍦?b>璇锋眰姝f枃浼犻€?/b>涓€夋嫨褰撴病鏈夊畾涔夋ā鏉挎椂 (鎺ㄨ崘)銆?br /> 閫夋嫨娣诲姞鏄犲皠妯℃澘銆?br /> 鍦?Content-Type 涓緭鍏?application/json锛岀劧鍚庨€夋嫨澶嶉€夋爣璁板浘鏍囷紙鍒涘缓锛夈€?/p>

9.鍦ㄦ槧灏勬ā鏉跨紪杈戝櫒涓紝杈撳叆浠ヤ笅鍐呭锛?br />

{
    "method": "$context.httpMethod",
    "body" : $input.json('$'),
    "headers": {
        #foreach($param in $input.params().header.keySet())
        "$param": "$util.escapeJavaScript($input.params().header.get($param))"
        #if($foreach.hasNext),#end
        #end
    }
}

10.閫夋嫨淇濆瓨銆?/p>

閮ㄧ讲鎮ㄧ殑 API

1.鍦?API Gateway 鎺у埗鍙?/b> API 鐨?a href="https://console.aws.amazon.com/apigateway/" target="_blank">璧勬簮绐楁牸涓紝閫夋嫨鎿嶄綔锛岀劧鍚庨€夋嫨閮ㄧ讲 API銆?/p>

2.鍦?b>閮ㄧ讲 API 瀵硅瘽妗嗕腑锛屾墽琛屼互涓嬫搷浣滐細
鍦?b>閮ㄧ讲闃舵閮ㄥ垎閫夋嫨銆?br /> 鍦?b>闃舵鍚嶇О閮ㄥ垎杈撳叆鍚嶇О锛屼緥濡?test銆?br /> 锛堝彲閫夛級杈撳叆闃舵鎻忚堪鍜?b>閮ㄧ讲鎻忚堪銆?br /> 閫夋嫨閮ㄧ讲銆?/p>

3.鍦?b>闃舵缂栬緫鍣?/b>绐楁牸涓紝灏?b>璋冪敤 URL 澶嶅埗鍒版偍鐨勫壀鍒囨澘銆傝 URL 绫讳技浜庝互涓嬪唴瀹癸細https://1a2bc3d456.execute-api.region.amazonaws.com/test銆?/p>

娴嬭瘯鎮ㄧ殑 API

浣跨敤 curl 灏嗘秷鎭彂閫佸埌鎮ㄧ殑 API Gateway API銆傚闇€鍏充簬 curl 鐨勬洿澶氫俊鎭紝璇峰弬瑙?cURL 椤圭洰缃戠珯銆?/p>

鎻愮ず锛氳鍦?Windows 涓婂畨瑁?curl锛屾偍鍙互涓嬭浇閫傚悎 Windows 鐨?Git锛屽叾涓寘鎷?GNU Bash shell 鍜屽叾浠?Linux 宸ュ叿锛屼緥濡?curl銆乼ail銆乧at銆乬rep銆乬zip 鍜?Perl銆傝涓嬭浇 Windows 鐗?Git锛岃鍙傞槄 Git 缃戠珯涓婄殑涓嬭浇銆傛湁鍏?Bash 鐨勬洿澶氫俊鎭紝璇峰弬闃?GNU 缃戠珯涓婄殑 GNU Bash銆?/p>

姝ょず渚嬪懡浠よ繑鍥?Lambda 鍑芥暟寮曠敤鐨?header1 鏍囧ご鐨勫€硷細

curl -H "Content-Type: application/json" -H "header1: API Gateway and AWS Lambda" -X POST -d "{\"API_body\": \"This is the body\"}" https://restApiId.execute-api.region.amazonaws.com/stageName/headersresource

娉ㄦ剰锛?/b>灏嗗懡浠や腑鐨?https://restApiId.execute-api.region.amazonaws.com/stageName 鏇挎崲涓?API 鐨?a href="https://docs.aws.amazon.com/apigateway/latest/developerguide/how-to-call-api.html" target="_blank">璋冪敤 URL銆?/p>

濡傛灉鎴愬姛锛屾偍灏嗙湅鍒颁互涓嬭緭鍑猴細

"This message header was processed by Amazon API Gateway and AWS Lambda"