【问题标题】:Matching ServiceName with a specified prefix使用指定前缀匹配 ServiceName
【发布时间】:2021-10-14 21:33:06
【问题描述】:

我正在尝试在 AWS CloudWatch 中创建警报。 有两种 CloudFormation 模板:一种用于创建架构(我无权访问),另一种用于警报。我想匹配ServiceName 我知道哪个前缀但它有一些随机后缀。 ServiceNameClusterName 都与 AWS ECS 相关。这是代码sn-p:

SomeAlarm:
  Type: 'AWS::CloudWatch::Alarm'
  Properties:
    ...
    Dimensions:
      - Name: ClusterName
        Value: <known cluster name>
      - Name: ServiceName
        Value: <known prefix><random suffix>

据我了解,在这种情况下我不能使用通配符或正则表达式,或者我不知道有什么方法可以实现它。此外,我无法将第一个模板更改为导出值并将它们导入第二个模板。 我可以使用什么语法来匹配ServiceName?有什么想法吗?

【问题讨论】:

  • 我不确定你可以。您对出口是解决方案的评估是正确的。似乎你的双手被束缚,没有外部脚本来获取所需的信息。

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


【解决方案1】:

由于您无法更改第一个模板,我认为您最好的选择是使用自定义资源。您可以通过两种方式解决此问题:

第一,您只需在自定义资源中编写整个 CloudWatch 警报。这意味着您必须确保实现所有更新和删除功能。这样您就可以使用 AWS 开发工具包来检索您需要的正确值。

第二种方法是使用自定义资源,但仅用于检索值。然后,您可以将该值作为返回值传递给 CloudFormation 资源,随后使用!GetAtt 方法检索和使用输出值。在这种情况下,我还将在您的自定义资源中添加一个虚拟参数,您可以随时更改该参数。当您无法控制的堆栈发生更改时,您可以使用此虚拟参数强制重新创建自定义资源(以及随后的警报)。

在我需要访问 Application Load Balancer ARN 进行 Elastic Beanstalk 部署之前,我曾使用过第二种方法,但该方法也不容易获得。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-11-22
    • 1970-01-01
    • 1970-01-01
    • 2019-01-09
    • 2019-01-11
    • 2013-06-03
    • 1970-01-01
    相关资源
    最近更新 更多