我构建了一个用于创建仪表板的 cloudformation 脚本。我遇到的问题是处理 lambda 函数名称。
在我的cloudformation脚本中
[ "AWS/Lambda", "Invocations", "FunctionName, "SC-accountNumber-*-FunctionName" ]
我替换了帐号和函数名称,并保留了通配符。还有其他一些东西。这不起作用。
我已经粘贴了函数的全名,仪表板工作正常。类似的东西
SC-0123456789-qw-sjdu5bd73hsn6-MyApiName
但我担心的是,当我们部署新版本时,随机字符串会发生变化。
如果类型对如何处理随机字符串产生影响,则该类型是公制的
不幸的是,Cloudwatch 在 FunctionName 维度中本身并不支持通配符 (*)。您只能指定确切的函数名称。
Lambda 函数似乎也是由 cloudformation 堆栈创建的,因此如果可能的话,最好对 lambda 函数名称进行硬编码。或者您可以从主堆栈导出它,然后将其导回仪表板堆栈
导出
Outputs:
LambdaFunctionName:
Description: "The name of the Lambda function"
Value: !Ref MyLambdaFunction
Export:
Name: MyLambdaFunctionName
导入
Parameters:
LambdaFunctionName:
Type: String
Default: !ImportValue MyLambdaFunctionName
您还可以创建一个SSM参数作为主堆栈的一部分,并将函数名称存储在那里,然后每当您部署新版本时,您也需要重新部署仪表板脚本。
最后您可以创建一个
Custom Resource
可以在 CloudFormation
堆栈(Dashbaord)创建或更新期间以编程方式查询函数名称。