AWS - Serverless 和 lambda

AWS裏面無服務器服務模式(Serverless)是一個近兩年很熱門的技術,他能夠容許服務無需任何服務器配置就能夠在須要的時候執行代碼。javascript

下面看一個簡單的例子如何經過Lambda,API Gateway, S3等雲服務來實現一個最基本的無服務器架構模式。html

例1:在某個網頁上點擊一個按鈕, 更新網頁的內容。java

簡單說明一下流程,用戶訪問S3的一個靜態網站,點擊一個按鈕,執行一個javascript的AJAX的Get操做,調用Amazon API Gateway,這個Gateway調用對應的Lambda 函數,返回結果到網頁api

AWS -  Serverless 和 lambda

首先咱們建立一個新的Lambda函數服務器

AWS -  Serverless 和 lambda

選擇高級語言和IAM Role架構

AWS -  Serverless 和 lambda

建立以後的界面,最中間顯示函數名,而後旁邊顯示他能夠訪問的資源less

AWS -  Serverless 和 lambda

而後咱們輸入本身的代碼,代碼很簡單,返回一個JSON格式的值ide

AWS -  Serverless 和 lambda

而後添加一個觸發器,這裏選擇API Gateway
AWS -  Serverless 和 lambda函數

選擇新建API網站

AWS -  Serverless 和 lambda

而後能夠點擊API的名字,進入API Gateway的配置界面。他的默認Action是 Any。刪掉,而後新建一個Get的Action

AWS -  Serverless 和 lambda

新建一個Get的method,綁定咱們的函數

AWS -  Serverless 和 lambda

流程示意圖
AWS -  Serverless 和 lambda

回到Lambda的界面,能夠看見自動生成的API Endpoint。直接訪問他就能夠調用咱們的函數了。
AWS -  Serverless 和 lambda

下一步,咱們須要建立一個S3的bucket,具體很少說了。建好以後,選擇創建一個靜態的網站,並上傳咱們的index.html和error.html

AWS -  Serverless 和 lambda

下面是咱們的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>

訪問一下這個靜態網頁,能夠看見界面以下

AWS -  Serverless 和 lambda

點擊按鈕,成功獲取了咱們在Python腳本里面設置的內容
AWS -  Serverless 和 lambda

相關文章
相關標籤/搜索