匹配具有指定前缀的 ServiceName
Matching ServiceName with a specified prefix
我正在尝试在 AWS CloudWatch 中创建警报。 有两种 CloudFormation 模板:一种用于创建架构(我无权访问),另一种用于警报。我想匹配 ServiceName
我知道的前缀,但它有一些随机后缀。 ServiceName
和 ClusterName
都与 AWS ECS 有关。这是代码片段:
SomeAlarm:
Type: 'AWS::CloudWatch::Alarm'
Properties:
...
Dimensions:
- Name: ClusterName
Value: <known cluster name>
- Name: ServiceName
Value: <known prefix><random suffix>
据我所知,在这种情况下我不能使用通配符或正则表达式,或者我不知道有什么方法可以实现它。此外,我无法更改第一个模板以导出值并将它们导入第二个模板。
我可以使用什么语法来匹配 ServiceName
?有什么想法吗?
由于您无法更改第一个模板,我认为最好的办法是使用自定义资源。您可以通过两种方式解决此问题:
第一,您只需将整个 CloudWatch 警报写入自定义资源中即可。这意味着您必须确保实现所有更新和删除功能。这样您就可以使用 AWS 开发工具包来检索您需要的正确值。
第二种方式是使用自定义资源,但仅用于检索值。然后,您可以将该值作为 return 值传递给您的 CloudFormation 资源,随后使用 !GetAtt
方法检索和使用输出值。在这种情况下,我还会在您的自定义资源中添加一个虚拟参数,您可以随时更改它。当堆栈中发生您无法控制的更改时,您可以使用此虚拟参数强制重新创建自定义资源(以及随后的警报)。
我以前使用过第二种方法,当时我需要访问 Application Load Balancer ARN 进行 Elastic Beanstalk 部署,这也不是现成的。
我正在尝试在 AWS CloudWatch 中创建警报。 有两种 CloudFormation 模板:一种用于创建架构(我无权访问),另一种用于警报。我想匹配 ServiceName
我知道的前缀,但它有一些随机后缀。 ServiceName
和 ClusterName
都与 AWS ECS 有关。这是代码片段:
SomeAlarm:
Type: 'AWS::CloudWatch::Alarm'
Properties:
...
Dimensions:
- Name: ClusterName
Value: <known cluster name>
- Name: ServiceName
Value: <known prefix><random suffix>
据我所知,在这种情况下我不能使用通配符或正则表达式,或者我不知道有什么方法可以实现它。此外,我无法更改第一个模板以导出值并将它们导入第二个模板。
我可以使用什么语法来匹配 ServiceName
?有什么想法吗?
由于您无法更改第一个模板,我认为最好的办法是使用自定义资源。您可以通过两种方式解决此问题:
第一,您只需将整个 CloudWatch 警报写入自定义资源中即可。这意味着您必须确保实现所有更新和删除功能。这样您就可以使用 AWS 开发工具包来检索您需要的正确值。
第二种方式是使用自定义资源,但仅用于检索值。然后,您可以将该值作为 return 值传递给您的 CloudFormation 资源,随后使用 !GetAtt
方法检索和使用输出值。在这种情况下,我还会在您的自定义资源中添加一个虚拟参数,您可以随时更改它。当堆栈中发生您无法控制的更改时,您可以使用此虚拟参数强制重新创建自定义资源(以及随后的警报)。
我以前使用过第二种方法,当时我需要访问 Application Load Balancer ARN 进行 Elastic Beanstalk 部署,这也不是现成的。