使用无服务器框架的 Lambda 函数环境设置中的逗号分隔符

Comma separator in Lambda function environment settings using the Serverless Framework

我正在尝试添加 MongoDB 集群作为无服务器部署的一部分,但我无法设置环境变量。

这是 serverless.yml 文件的一部分:

service: serverless-test

plugins:
  - serverless-offline

provider:
  name: aws
  runtime: nodejs4.3
  environment:
    MONGO_URI: "mongodb://mongo-6:27000,mongo-7:27000,mongo-8:27000/db-dev?replicaSet=mongo"

如何传递 MONGO_URI 以包含集群作为逗号分隔值?

非常感谢任何建议。

遗憾的是,您不能在 Lambda 环境变量中使用逗号。这是 AWS 限制而不是无服务器问题。

例如,浏览AWS console并尝试添加一个包含逗号的环境变量:

保存时会出现以下错误:

1 validation error detected: Value at 'environment.variables' failed to satisfy constraint: Map value must satisfy constraint: [Member must satisfy regular expression pattern: [^,]*]

错误消息说必须满足正则表达式 [^,]* 而这个小正则表达式明确表示的是 not (^) 接受逗号(,)。可以接受任何其他字符。

我不知道他们为什么不接受逗号,这在他们的 documentation 中没有解释,但至少他们的错误消息表明这是故意的。

作为一种变通方法,您可以将逗号替换为另一个符号(如 #)以创建环境变量并在读取变量后将其替换回逗号,否则您将需要创建多个环境变量存储端点。