1. 程式人生 > >AWS - Serverless 和 lambda

AWS - Serverless 和 lambda

成功 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