【问题标题】:How to pass aws-lambda function name to generate a cloudwatch alarm using cloudformation template如何使用 cloudformation 模板传递 aws-lambda 函数名称以生成 cloudwatch 警报
【发布时间】:2020-01-09 04:47:05
【问题描述】:

我有一个 aws lambda 函数,我正在尝试使用 cloudformation 模板创建一个 cloudwatch 警报。

假设我有一个名为 MyPackage-MyLambdaFunctionName 的 lambda 函数,但是当我在 aws 控制台中看到我的 lambda 时,它显示的是 MyPackage-MyLambdaFunctionName-M2DEESRWNF6I

我可以通过在维度中传递以下内容来创建警报:

    Dimensions:
      - Name: FunctionName
        Value: MyPackage-MyLambdaFunctionName-M2DEESRWNF6I

(参考How to set lambda alarm for specific lambda using CloudFormation

但问题是 lambda 函数末尾有一个随机分量 (-M2DEESRWNF6I)。

我有一个 cloudformation 模板,它包含在几个帐户中并创建了这些 lambda 函数。而且由于这些随机标识符在每个帐户中都不同,因此我无法将上述内容放入 cloudformation 模板中,因为它适用于一个帐户,但不适用于其他帐户。

那么,如何使用 cloudformation 模板在我的 lamdba 函数上创建这些 cloudwatch 警报? 比如“Value”是否需要正则表达式?我试过了

    MyPackage-MyLambdaFunctionName.*  

这没有用。或者有没有办法将 lambda 函数名称限制为 MyPackage-MyLambdaFunctionName (没有随机标识符)

感谢任何指导/帮助。

谢谢

【问题讨论】:

  • 如果你为你的 lambda 函数配置了FunctionName,你应该得到你配置的名字。
  • 现在可以使用了,谢谢 :)

标签: amazon-web-services aws-lambda amazon-cloudformation amazon-cloudwatch


【解决方案1】:

您的 lambda 函数名称末尾的随机字符串在那里,因为您在创建 lambda 名称时没有明确设置它。来自docs

函数名

Lambda 函数的名称,最多 64 个字符 长度。如果您不指定名称,AWS CloudFormation 会生成一个。

一般来说,这是正确的做法,因为如果你设置了它,你就不能改变任何需要替换的参数(虽然我想不出任何需要在 lambda 上替换的参数)。

来自同一个文档:

如果指定名称,则无法执行需要 替换此资源。您可以执行不需要的更新 或一些中断。如果必须替换资源,请指定新的 名字。

要创建警报,您只需在警报创建代码中引用 Lambda 函数即可。

像这样:

Dimensions:
  - Name: "FunctionName"
    Value:
      Ref: LambdaFunctionReference

【讨论】:

  • 我正在使用 AWS::Serverless::Function 生成 lambda 函数,但在任何地方都没有看到这个 FunctionName,感谢您的帮助和详细回答:)
猜你喜欢
  • 1970-01-01
  • 2021-03-27
  • 1970-01-01
  • 2019-11-09
  • 1970-01-01
  • 1970-01-01
  • 2021-03-24
  • 1970-01-01
  • 2021-10-03
相关资源
最近更新 更多