前言
AWS lambda 作為 serverless 服務,之前有介紹過 AWS Lambda 初體驗 by .net core,本次要介紹 serverless 框架搭配 AWS CloudFormation
(IaC)
Serverless 預設使用 provider 是 AWS
AWS is the default cloud provider used by Serverless Framework.
建立第一個 serverless
本次案例我們利用 serverless cli 建立 dotnet template,利用 nqm 安裝
1 | npm install -g serverless |
安裝完後建立一個 dotnet core serverless project
1 | serverless create -t aws-csharp -n dotnetServerless |
本次使用參數說明
- –template / -t :Template for the service
- –name / -n: Name for the service. Overwrites the default name of the created service
跑完命令後會出現下圖專案結構
- Build script: template 產生 build 專案腳本
- build.cmd:window 使用
- build.sh:linux 使用
- Handler.cs:template 預設 lambda 呼叫點
- serverless.yml:
- provider:Serverless Infrastructure Providers AWS,Azure,GCP…
- service:部署上 serverless 名稱(本次使用 lambda)
- frameworkVersion:使用 Serverless 版本(建議使用)
- runtime:運行環境
- functions:
- handler:運行執行 serverless entry point
長出來的 serverless.yml
會如下
1 | service: dotnetServerless |
Deploy serverless package
執行 serverless deploy
命令我們會將
預設 Deploy Region :
us-east-1
或是使用參數--region / -r
指定上傳 Region
1 | Deploying dotnetServerless to stage dev (us-east-1) |
上傳完畢後在 CloudFormation
應該可以看到我們建立資源如下
- AWS::Lambda::Function
- AWS::Lambda::Version
- AWS::Logs::LogGroup
- AWS::IAM::Role
- AWS::S3::Bucket
- AWS::S3::BucketPolicy
在 lambda 會自動建立 dotnetServerless-dev-hello
我們利用 UI 測試 lambda 會得到如下資訊
1 | { |
lambda ReDeploy
我們稍微更新 lambda 回應資訊
1 | public Response Hello(Request request) |
再次執行 .\build.cmd & serverless deploy
後並測試 lambda 會得到更新後資訊,讓我們更新 lambda 變得很簡單,是不是很猛
1 | { |
小結
Serverless 框架搭配 CloudFormation
幫助我們把許多自動化細節封裝起來讓我們只需要關注開發,利用 Serverless cli 我們可以快速把一個 CI/CD lambda 流程建立起來
本次 Sample code 連結 DotNetServerless
__此文作者__:Daniel Shih(石頭)
__此文地址__: https://isdaniel.github.io/aws-serverless/
__版權聲明__:本博客所有文章除特別聲明外,均採用 CC BY-NC-SA 3.0 TW 許可協議。轉載請註明出處!