我想在api网关使用stage variables时转义$ sign。
尝试部署时出现以下错误。
变量stageVariables.capabilitySecurityUrl的变量引用语法无效。 您只能参考env vars,options和&文件。您 可以查看我们的文档以获取更多信息。
我尝试了以下选项,但没有正常工作
1)使用无引号 Uri:https:// $ {stageVariables.capabilitySecurityUrl}
2)使用引号 Uri:" https:// $ {stageVariables.capabilitySecurityUrl}"
3)从文件
访问变量./stageVariables.json
{
"capabilitySecurityUrl":"https://${stageVariables.capabilitySecurityUrl}"
}
./serverless.yml
${file(./stageVariables.json):capabilitySecurityUrl}
任何帮助?
答案 0 :(得分:2)
正如作者所说,自定义 variableSyntax 对我有用:
# notice the double quotes for yaml to ignore the escape characters!
# Use this for allowing CloudFormation Pseudo-Parameters in your serverless.yml
# e.g. ${stageVariables.my_var}. All other Serverless variables work as usual.
variableSyntax: "\\${((?!stageVariables)[ ~:a-zA-Z0-9._@'\",\\-\\/\\(\\)]+?)}"
答案 1 :(得分:0)
你需要使用双$符号进行转义。
尝试:
https://$${stageVariables.capabilitySecurityUrl}
来源:How can I escape a $ dollar sign in a YAML string?
作为旁注,这与在ES6文字字符串中转义$符号时使用的策略相同。
答案 2 :(得分:0)
您可以尝试使用Cloudformation Join function:
Fn::Join: ['', ['https://$','{{stageVariables.capabilitySecurityUrl}}']]
答案 3 :(得分:0)
转义变量现在由 Serverless
原生支持https://github.com/serverless/serverless/issues/3565
<块引用>关闭,因为新的解析器支持转义,例如 ${self:} 将按字面意思进行