AWS - Serverless 和 lambda
阿新 • • 發佈:2019-02-08
成功 dex 他會 lam status ebe int ner 指定 AWS裏面無服務器服務模式(Serverless)是一個近兩年很熱門的技術,他可以允許服務無需任何服務器配置就可以在需要的時候執行代碼。
下面看一個簡單的例子如何通過Lambda,API Gateway, S3等雲服務來實現一個最基本的無服務器架構模式。
例1:在某個網頁上點擊一個按鈕, 更新網頁的內容。
簡單說明一下流程,用戶訪問S3的一個靜態網站,點擊一個按鈕,執行一個javascript的AJAX的Get操作,調用Amazon API Gateway,這個Gateway調用對應的Lambda 函數,返回結果到網頁
首先我們創建一個新的Lambda函數
選擇高級語言和IAM Role
創建之後的界面,最中間顯示函數名,然後旁邊顯示他可以訪問的資源
然後我們輸入自己的代碼,代碼很簡單,返回一個JSON格式的值
然後添加一個觸發器,這裏選擇API Gateway
選擇新建API
然後可以點擊API的名字,進入API Gateway的配置界面。他的默認Action是 Any。刪掉,然後新建一個Get的Action
新建一個Get的method,綁定我們的函數
流程示意圖
回到Lambda的界面,可以看見自動生成的API Endpoint。直接訪問他就可以調用我們的函數了。
下一步,我們需要創建一個S3的bucket,具體不多說了。建好之後,選擇建立一個靜態的網站,並上傳我們的index.html和error.html
下面是我們的index.html的內容,當點擊按鈕的時候,他會執行javascript的方法,然後執行一個AJAX的GET操作,從指定的API Gateway那裏獲取返回值
<html> <head> <script> function myFunction() { var xhttp = new XMLHttpRequest(); xhttp.onreadystatechange = function() { if (this.readyState == 4 && this.status == 200) { document.getElementById("my-demo").innerHTML = this.responseText; } }; xhttp.open("GET", "https://br6b44zf93.execute-api.ap-southeast-2.amazonaws.com/default/Demo1", true); xhttp.send(); } </script> </head> <body> <div align="center"> <br> <br> <br> <br> <h1>Hello <span id="my-demo">Guys !</span></h1> <button onclick="myFunction()">Click me</button> <br> </div> </body> </html>
訪問一下這個靜態網頁,可以看見界面如下
點擊按鈕,成功獲取了我們在Python腳本裏面設置的內容
AWS - Serverless 和 lambda