一,使用模板文件(template.yml)配置相关资源
3个Lambda函数 及 数据库
AWSTemplateFormatVersion: '2010-09-09'
Transform: AWS::Serverless-2016-10-31
Description: >
demo-typescript-01
Globals:
Function:
Timeout: 3
Resources:
# 定义Lambda 方法到 /getAll
Function01:
Type: AWS::Serverless::Function
Properties:
CodeUri: src/
Handler: function01.lambdaHandler
Runtime: nodejs16.x
Architectures:
- x86_64
Events:
HelloWorld:
Type: Api
Properties:
Path: /getAll
Method: get
Metadata:
BuildMethod: esbuild
BuildProperties:
Minify: true
Target: "es2020"
EntryPoints:
- function01.ts
# 定义Lambda 方法到 /get/{id}
Function02:
Type: AWS::Serverless::Function
Properties:
CodeUri: src/
Handler: function02.lambdaHandler
Runtime: nodejs16.x
Architectures:
- x86_64
Events:
HelloWorld:
Type: Api
Properties:
Path: /get/{id}
Method: get
Metadata: # Manage esbuild properties
BuildMethod: esbuild
BuildProperties:
Minify: true
Target: "es2020"
EntryPoints:
- function02.ts
# 定义一个资源数据库
SampleTable:
Type: AWS::Serverless::SimpleTable
Properties:
PrimaryKey:
Name: id
Type: String
ProvisionedThroughput:
ReadCapacityUnits: 2
WriteCapacityUnits: 2
Outputs:
FunctionsApi:
Description: "API Gateway endpoint URL for Prod stage for Hello World function"
Value: !Sub "https://${ServerlessRestApi}.execute-api.${AWS::Region}.amazonaws.com/Prod/"
执行
sam deploy
这样就在服务端部署了 一个Lambda应用(含2个函数绑定到2个节点的GET请求)以及一个数据库。
这个时候浏览器远程访问上述地址就能正常访问到
二,代码部分
因为不习惯JS,所以使用TypeScript撰写代码。使用 sam init 命令,选择 【AWS Quick Start Template】>【Hello World Example】> 【nodejs16.x】 > 【Zip】> 【Hello World Example TypeScript】一步一步生成,稍微调整下代码结构,并且加了几个方法:
调整及开发过程中使用SAM命令结合MCS插件,确认动作,及本地单步调试
(详细可参考:AWS学习笔记(一)),
三,各种本地 远程 资源访问方法
本地环境搭建部分,参见 AWS学习笔记(一)
// DynamoDB 本地 / 远程
var ddb = new AWS.DynamoDB({
apiVersion: '2012-08-10',
endpoint: "http://localhost:8008"
});
var ddb = new AWS.DynamoDB({
apiVersion: '2012-08-10'
});
// SQS 本地 / 远程
var sqs = new AWS.SQS({
region: 'ap-northeast-1',
endpoint: "http://localhost:9324"
});
var sqs = new AWS.SQS({
region: 'ap-northeast-1',
endpoint: "http://localhost:9324"
});
其他类似,略;
SDK参考: https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/
其他待补充……