使用AWS Lambda功能構建您的第一個無服務器服務
許多開發人員對AWS lambda功能有一些熟悉。雖然相對易於設置,但是瀏覽龐大的AWS生態系統可能具有挑戰性。龐大的組件數量使得很難掌握大圖,並將Lambda的功能順利地集成到標準的Web應用程序中。
無服務器框架大大簡化了此過程。它簡化了創建,部署以及(最重要的是)Lambda函數在Web應用程序中的集成。儘管它的功能遠遠超出了這一點,但本文側重於這些核心方面。這本簡介有望激發您探索Serverless更廣泛功能的興趣。如果您是Lambda的新手,請首先考慮查看此AWS入門指南。
快速啟動指南為初始安裝和設置提供了最佳說明。之後,即使您需要創建AWS帳戶,您也應該在5-10分鐘內進行操作。
您的第一個無服務器服務
在研究文件上載和S3存儲桶等高級功能之前,讓我們創建一個基本的lambda函數,將其連接到HTTP端點,然後從現有的Web應用程序調用它。該功能不會執行任何復雜的任務,但有效地證明了無服務器框架的易用性。
首先創建您的服務。在您的Web應用程序中(使用create-react-app
是啟動新的應用程序),為您的服務創建目錄(例如, lambda
文件夾)。在您的終端中導航到此目錄並運行:
SLS創建-t aws-nodejs -path hello hello-world
這創建了一個hello-world
目錄。讓我們檢查一下其內容。
handler.js
包含一個返回消息的異步函數。您可以使用sls deploy
立即部署此Lambda功能,從而使其引用。但是,讓我們首先通過網絡訪問它。
手動AWS配置將涉及設置AWS API網關端點和舞台,然後將其配置為代理您的lambda。無服務器以最小的配置處理所有這些。
仍在hello-world
目錄中,打開serverless.yaml
。
配置文件包括用於通用設置的樣板。刪除HTTP條目,並指定一個更具描述性的路徑:
功能: 你好: 處理程序:Handler.Hello 事件: -http: 路徑:msg 方法:獲取
就是這樣。無服務器管理基本的複雜性。
CORS配置
要使用Fetch API調用前端JavaScript的功能,CORS配置是必要的。本節概述了該過程。
添加cors: true
:
功能: 你好: 處理程序:Handler.Hello 事件: -http: 路徑:msg 方法:獲取 CORS:是的
這將在API端點上配置COR,從而啟用交叉原始通信。
CORS LAMBDA調整
雖然HTTP端點是啟用了CORS的,但Lambda功能必須返回適當的標題。讓我們通過修改handler.js
來自動化這一點:
const corsresponse = obj =>({{ 狀態代碼:200, 標題:{ “ Access-Control-Allow-Origin”:“*”, “訪問控制 - 允許頭”:“*”, “ Access-Control-Allow-Methods”:“*” },, 身體:json.stringify(obj) }); module.exports.hello = async event => { 返回corsresponse(“你好,世界!”); };
現在,通過此函數來處理lambda函數的響應。
從hello-world
目錄sls deploy
以部署Lambda函數。
sls info
命令提供了該函數的URL,無需手動將其定位在AWS控制台中。 URL將類似於:
<code>https://6xpmc3g0ch.execute-api.us-east-1.amazonaws.com/dev/msg</code>
調用功能
現在,讓我們使用fetch從Web應用程序中調用函數:
fetch(“ https://6xpmc3g0ch.execute-api.us-east-1.amazonaws.com/dev/msg”) 。 然後(resp => { console.log(resp); });
該消息應顯示在瀏覽器的開發人員控制台中。
讓我們重複此過程,創建一個更實用的功能:一個調整圖像並將其上傳到S3存儲桶的lambda。用戶無需觸發S3上傳,而是直接上傳到Lambda,從而消除了對客戶端AWS SDK資源的需求。
建造一個實用的lambda
讓我們創建一個新服務(例如, cover-art
):
SLS創建-t aws-nodejs-Path Cover-Art
添加HTTP端點路徑(文件上傳的後方法)並啟用CORS:
事件: -http: 路徑:上傳 方法:發帖 CORS:是的
通過在serverless.yaml
中刪除和修改iamRoleStatements
部分,授予lambda訪問您的S3存儲桶(S):
iamRolestatement: - 效果:“允許” 行動: - “ S3:*” 資源:[“ arn:aws:s3 ::: your-bucket-name/*”]
配置API網關以接受multipart/form-data
:
提供者: 名稱:aws 運行時:nodejs12.x Apigateway: 二進制型: - “多部分/form-data”
將功能重命名為serverless.yaml
和handler.js
upload
。
實施代碼
安裝所需的軟件包:
npm我jimp uuid lambda-multipart-parser
在handler.js
中實現S3上傳助手函數和主要上傳功能(完整的代碼太廣泛而不是在此處包含,但在原始提示中可用)。
在客戶端上使用諸如react-dropzone
之類的庫來處理文件上傳(原始提示中提供的示例代碼)。
可選:捆綁
捆綁代碼會降低部署規模並提高性能。安裝serverless-webpack
:
npm i無服務器 - webpack -save-dev
將其添加到serverless.yaml
:
插件: - 無服務器-Webpack
創建webpack.config.js
(原始提示符中提供的配置)。重新部署以利用WebPack。
結論
無服務器框架大大簡化了AWS lambda功能的開發和部署。本引言為進一步探索其功能奠定了基礎。原始提示中提到的資源為深度理解提供了寶貴的學習機會。
以上是使用AWS Lambda功能構建您的第一個無服務器服務的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

在本週的平台新聞綜述中,Chrome引入了一個用於加載的新屬性,Web開發人員的可訪問性規範以及BBC Move

有很多分析平台可幫助您跟踪網站上的訪問者和使用數據。也許最著名的是Google Analytics(廣泛使用)
