在无服务器资源名称中使用变量
Using variables in Serverless resource name
在我的 serverless.yml 我有:
public-function:
handler: function.Handler
我想设置 public-function 行的参数,但我不确定如何操作。我知道我可以为函数添加一个 name: 属性并使用 https://www.serverless.com/framework/docs/providers/aws/guide/variables/ 中记录的 ${} 语法,但这只解决了我的问题的一半,因为 public-function 被 Serverless 用作我也希望具有参数化名称的其他资源的名称。
有没有办法在资源名称中使用变量?
声明的功能键(即public-function
)只是一个reference in the stack。没有理由在构建时更改它,因为名称是任意的。
如果要自定义已部署函数的详细信息,change its configuration。
例如,使用环境变量将函数名称更改为其他名称:
functions:
main:
handler: function.Handler
name: ${self:provider.stage}-${env:FUNCTION_NAME}
如果要将资源导出到另一个堆栈,可以像这样定义导出名称:
resources:
Outputs:
MainFunction:
Value:
Fn::GetAtt: [MainLambdaFunction, Arn]
Export:
Name: ${self:provider.stage}-${env:CUSTOM_EXPORT_NAME}
这两个示例的阶段范围是推荐的,但不是必需的;您可以随意命名函数、资源和输出。
在我的 serverless.yml 我有:
public-function:
handler: function.Handler
我想设置 public-function 行的参数,但我不确定如何操作。我知道我可以为函数添加一个 name: 属性并使用 https://www.serverless.com/framework/docs/providers/aws/guide/variables/ 中记录的 ${} 语法,但这只解决了我的问题的一半,因为 public-function 被 Serverless 用作我也希望具有参数化名称的其他资源的名称。
有没有办法在资源名称中使用变量?
声明的功能键(即public-function
)只是一个reference in the stack。没有理由在构建时更改它,因为名称是任意的。
如果要自定义已部署函数的详细信息,change its configuration。
例如,使用环境变量将函数名称更改为其他名称:
functions:
main:
handler: function.Handler
name: ${self:provider.stage}-${env:FUNCTION_NAME}
如果要将资源导出到另一个堆栈,可以像这样定义导出名称:
resources:
Outputs:
MainFunction:
Value:
Fn::GetAtt: [MainLambdaFunction, Arn]
Export:
Name: ${self:provider.stage}-${env:CUSTOM_EXPORT_NAME}
这两个示例的阶段范围是推荐的,但不是必需的;您可以随意命名函数、资源和输出。