我尝试使用此 .yml 在具有无服务器框架的 vpc 内部署一个简单的 lambda
useDotenv: true
provider:
name: aws
runtime: nodejs18.x
stage: prod
functions:
bot:
handler: src/index.run
environment:
vpc:
securityGroupIds:
- ${env:SECURITY_GROUP_ID}
subnetIds:
- ${env:SUBNET_ID}
events:
# Invoke Lambda function every 35 minutes
- schedule: rate(35 minutes)
这被返回
Error:
CREATE_FAILED: BotLambdaFunction (AWS::Lambda::Function)
Properties validation failed for resource BotLambdaFunction with message:
[#/Environment/Variables/vpc: expected type: String, found: JSONObject]
检查是否有嵌套在
vpc
上的 environment
属性。所以我想这就是为什么我们看到错误消息需要字符串而不是 JSON 对象。
显然你没有任何环境变量,所以你可以删除该键并将 vpc 移动到直接嵌套在函数上:
useDotenv: true
provider:
name: aws
runtime: nodejs18.x
stage: prod
functions:
bot:
handler: src/index.run
vpc:
securityGroupIds:
- ${env:SECURITY_GROUP_ID}
subnetIds:
- ${env:SUBNET_ID}
events:
# Invoke Lambda function every 35 minutes
- schedule: rate(35 minutes)
以下是使用 VPC 设置 lambda 函数的一些示例: https://www.serverless.com/framework/docs-providers-aws-guide-functions
下面的链接显示有关
environment
属性的信息:
https://www.serverless.com/framework/docs-providers-aws-guide-variables