簡(jiǎn)介
本文將創(chuàng)建一個(gè)微型網(wǎng)站,以達(dá)到綜合運(yùn)用AWS服務(wù)的目的:
1.Dynamodb:一種完全托管的NoSQL數(shù)據(jù)庫(kù)服務(wù)
2.Lambda:實(shí)現(xiàn)具體的業(yè)務(wù)邏輯,基于python3編寫,它會(huì)調(diào)用dynamodb數(shù)據(jù)庫(kù)。
3.API Gateway:一種完全托管的服務(wù),可以幫助開(kāi)發(fā)者輕松創(chuàng)建、發(fā)布、維護(hù)、監(jiān)控和保護(hù)任意規(guī)模的API。
4.S3:Host一個(gè)較為簡(jiǎn)單的靜態(tài)網(wǎng)站,并調(diào)用開(kāi)放出來(lái)的REST API
1.創(chuàng)建Dynamodb
新建一張表(employee),以name為Primary key(partial key),再新增兩行數(shù)據(jù),如下圖所示:
2.編寫Lambda邏輯
2.1創(chuàng)建一個(gè)Lambda名為conglambda
2.2 lambda_function.py
lambda_function.lambda_handler作為入口函數(shù),它會(huì)調(diào)用dynamodb.
2.3 DynamoDBService.py
此模塊會(huì)使用boto3調(diào)用dynamodb,其中AWS_ACCESS_ID和AWS_ACCESS_KEY可以在IAM--->Users-->Security credentials-->Create access key創(chuàng)建。
2.4 employee.py
相當(dāng)于一個(gè)model類或是一個(gè)Dto類。
3.創(chuàng)建一個(gè)API Gateway
命令為congAPI,在resources中創(chuàng)建一個(gè)新的Method,選擇Get,選擇剛創(chuàng)建的lambda
接下來(lái),我們需要給API Gateway傳遞參數(shù),點(diǎn)擊Integration Request-->Mapping Templates中,輸入如下內(nèi)容,以便可以傳入name參數(shù)給api gateway。
編輯好后,需要部署API Gateway,點(diǎn)擊Deploy API
輸入Dev,點(diǎn)擊發(fā)布,會(huì)生成如下鏈接
我們?cè)跒g覽器上輸入相應(yīng)的name參數(shù),就可以成功訪問(wèn)到相應(yīng)的數(shù)據(jù)了,此數(shù)據(jù)來(lái)源于dynamodb.
4.使用S3服務(wù)host一個(gè)較為簡(jiǎn)單的靜態(tài)網(wǎng)站
4.1準(zhǔn)備index.html
它會(huì)使用jquery調(diào)用剛才創(chuàng)建的api gateway,具體內(nèi)容如下:
4.2創(chuàng)建一個(gè)S3 bucket名為cong-bucket
上傳此index.html
4.3將Permissions設(shè)置為public,以便公網(wǎng)可以訪問(wèn)到index.html
首先將Bock public access下面的4行全部改成off
將Bucket改成public有多種方式,這里使用Bucket Policy。即所有人都可以訪問(wèn),如下圖:
4.4啟用bucket hosting,將host一個(gè)較為簡(jiǎn)單的靜態(tài)網(wǎng)站
4.5驗(yàn)證與測(cè)試
訪問(wèn)此網(wǎng)站,輸入name,點(diǎn)擊search,可以看到根據(jù)輸入的不同,從數(shù)據(jù)庫(kù)中抓取相應(yīng)的內(nèi)容并顯示在網(wǎng)頁(yè)上