使用 vpc 创建无服务器 Lambda 返回 Variables/vpc:预期类型:String,找到:JSONObject

问题描述 投票:0回答:1

我尝试使用此 .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]
amazon-web-services aws-lambda serverless-framework amazon-vpc
1个回答
0
投票

检查是否有嵌套在

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

© www.soinside.com 2019 - 2024. All rights reserved.