gpt4 book ai didi

amazon-web-services - 使用 AWS cloudformation 模板创建标准 AWS Cloudwatch 警报

转载 作者:行者123 更新时间:2023-12-03 07:23:15 32 4
gpt4 key购买 nike

假设我正在为一家杂货店开发应用程序。我们都知道杂货店里有数百种杂货。现在,我的要求是使用 AWS Cloudformation 模板 (CFT) 创建 AWS Cloudwatch 警报。

之前假设我们的杂货店里只有大米和小麦,因此我们在 CFT 中创建了单独的警报资源。一个例子:

    {
"AWSTemplateFormatVersion": "2010-09-09",
"Description": "AWS cloudwatch Grocery",
"Parameters": {
"Email": {
"Type": "String",
"Description": "Email address to notify when alarm is triggered",
"Default": "<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="d1b4bcb0b8bd91b4bcb0b8bdffb2bebc" rel="noreferrer noopener nofollow">[email protected]</a>"
}
},
"Resources": {
"AlarmNotificationTopic": {
"Type": "AWS::SNS::Topic",
"Properties": {
"Subscription": [
{
"Endpoint": {
"Ref": "Email"
},
"Protocol": "email"
}
]
}
},
"RiceQuantityLowAlarm": {
"Type": "AWS::CloudWatch::Alarm",
"Properties": {
"AlarmName": "RiceQuantityLowAlarm",
"AlarmDescription": "Alarm which gets triggered when Rice quantity is low",
"AlarmActions": [
{
"Ref": "AlarmNotificationTopicTest"
}
],
"MetricName": "Quantity",
"Namespace": "Grocery",
"Dimensions": [
{
"Name": "Item",
"Value": "Rice"
}
],
"ComparisonOperator": "LessThanOrEqualToThreshold",
"EvaluationPeriods": "10",
"Period": "360",
"Statistic": "Sum",
"Threshold": "1",
"TreatMissingData": "notBreaching"
}
},
"WheatQuantityLowAlarm": {
"Type": "AWS::CloudWatch::Alarm",
"Properties": {
"AlarmName": "WheatQuantityLowAlarm",
"AlarmDescription": "Alarm which gets triggered when Wheat quantity is low",
"AlarmActions": [
{
"Ref": "AlarmNotificationTopicTest"
}
],
"MetricName": "Quantity",
"Namespace": "Grocery",
"Dimensions": [
{
"Name": "Item",
"Value": "Wheat"
}
],
"ComparisonOperator": "LessThanOrEqualToThreshold",
"EvaluationPeriods": "10",
"Period": "360",
"Statistic": "Sum",
"Threshold": "1",
"TreatMissingData": "notBreaching"
}
}
}
}

现在假设我想在我的杂货店中添加更多商品,并且我不想仅限于大米和小麦。在本例中,假设我想向我的杂货店添加 5 件新商品。因此,如果我遵循上述方法,我将在 CFT 中创建 5 个新的单独的 cloudwatch 警报资源,并且每当有新项目出现时都会这样做。但我不想这样做,因为我很懒。

我们有什么办法可以标准化 CFT 资源吗?您可以看到,CFT CloudWatch 警报资源中只有名称(大米/小麦)不同,其余内容都是相同的。

最佳答案

这对于纯 CloudFormation 来说是不可能的。模板是声明性的,您不能使用循环等代码结构来生成资源。以下列表概述了一些可以使模板更加动态或能够重用代码的方法(排名不分先后):

  1. 使用 nested stack减少需要管理的代码量
  2. 写一个custom resource接受项目列表并通过使用 sdk 的代码维护警报
  3. 使用第三方库(例如 SparkleFormation)通过脚本/编程语言生成模板或troposphere
  4. 使用不同的 IaC 工具,例如 Terraform (允许一些类似编程的结构并且比 CF 更灵活)或 AWS CDK (用各种语言编写可编译为 CloudFormation 模板的真实代码)

每种方法都有自己的优点和缺点,并且都比 ctrl/cmd+cctrl/cmd 需要更多的工作+v所以在做出决定时请记住这一点!

关于amazon-web-services - 使用 AWS cloudformation 模板创建标准 AWS Cloudwatch 警报,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68711910/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com