前言
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 許可協議。轉載請註明出處!
