[tutorial] 使用 AWS SAM 建立與執行 Lambda 函數
📌 Introduction
主要介紹如何使用 AWS SAM 建立與執行 Lambda 函數,包含基本安裝、專案結構說明,以及在本地端執行 Lambda 的操作流程
🚀 Quick Start
AWS CLI
1 | brew install awscli |
AWS SAM (Serverless Application Model) CLI
1 | brew install aws-sam-cli |
初始化 SAM project
1 | sam init |
介紹專案架構
1 | . |
events/
- 放置模擬事件(Event Payload)的 Json 檔,用來測試 Lambda 函數hello_world/
- Application 的放置處,與 Lambda 有關的函數,包含 handler 函式(例如 app.py)以及依賴(例如 requirements.txt)tests/
- 單元測試的資料夾samconfig.toml
- 儲存 SAM CLI 執行參數(如部署區域、Stack 名稱、S3 bucket 等),用來簡化sam deploy
時的設定流程template.yaml
- 定義所有 Lambda 函數,IaC 的主要核心檔案(主要會用到哪些服務,互相的相依關係),是基於 AWS CloudFormation 的擴充語法
template.yaml
可使用 CloudFormation Linter 工具
cfn-lint
對檔案偵測格式、屬性錯誤
Header
1 | AWSTemplateFormatVersion: '2010-09-09' |
- AWSTemplateFormatVersion - AWS CloudFormation 的版本號
- Transform - 告訴 CloudFormation 這個模板要額外使用 SAM 來擴充語法
- Description - 專案介紹
Content
- Globals - 預設設定,提供給 Resources 使用
- Resources - 建立的 AWS 資源,可參考 AWS resource and property types reference、AWS SAM resources and properties
- Outputs - 在部署完後預期印出的結果(你需要知道哪些資訊)
samconfig.toml
可參考 AWS SAM CLI configuration file、Configuring the AWS SAM CLI、AWS SAM CLI command reference
目的是為了簡化使用 sam 指令時的複雜度
Original | Optimized with samconfig |
---|---|
sam build --cached --parallel --use-containers |
sam build |
sam local invoke --env-vars locals.json |
sam local invoke |
sam local start-api --env-vars locals.json --warm-containers EAGER |
sam local start-api |
Local Invoke
1 | sam local invoke |
1 | No current session found, using default AWS::AccountId |
🔁 Recap
- 安裝指令
- 理解 AWS SAM 的專案架構
- 知道特定檔案
template.yaml
、samconfig.toml
檔案用途以及欄位的官方相關文件 - 在地端 Invoke 一個簡單的
Hello World
Lambda Function
🔗 References
[tutorial] 使用 AWS SAM 建立與執行 Lambda 函數
https://hsiangjenli.github.io/blog/tutorial_chinese_aws_sam_install_and_lambda/