在无服务器资源名称中使用变量

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}

这两个示例的阶段范围是推荐的,但不是必需的;您可以随意命名函数、资源和输出。