使用脚本为现有 SQS 队列创建警报
Creating alarms for existing SQS queues using script
我正在尝试使用云形成基于我的 AWS 账户中现有的 SQS 队列指标创建警报。我有超过 25 个 SQS 队列,不想重复我一一提到 SQS 队列的代码。是否有一种有效的方法(更短的代码)来使用编程创建警报?
这是 CloudFormation 模板的 YAML 代码。在此,我提到了我现有队列中的一个队列。
Parameters:
SQSAlarm:
Type: String
Description: Alarm for existing SQS Queues
Default: Queue1
SQSAlarm:
Type: String
Description: Alarm for existing SQS Queues
Default: Queue3
Resources:
MyAlarm:
Type: AWS::CloudWatch::Alarm
Properties:
AlarmName:
!Ref SQSAlarm
MetricName: "QueueName"
Namespace: AWS/SQS
Statistic: Average
Period: 60
EvaluationPeriods: 1
Threshold: 60
ComparisonOperator: GreaterThanThreshold
MetricName: ApproximateAgeOfOldestMessage
AlarmActions:
- arn:aws:sns:us-east-1:589557565942:SQS-Oldest-Message
Dimensions:
- Name: QueueName
Value: !Ref SQSAlarm
CloudFormation (CFN) 中没有循环。唯一适合您的解决方案如下:
- 创建 CFN macro,自动生成队列定义。
- 创建一个 custom resource 以使用 lambda 函数和 AWS SDK“手动”创建队列。
- 使用nested stack,仍然需要重复,但也许会更短。
- 不要使用 CFN。还有其他更强大的 IaC 工具,例如 Terraform,它们具有循环和范围编程技术组合,可以轻松自动生成这些队列。
我正在尝试使用云形成基于我的 AWS 账户中现有的 SQS 队列指标创建警报。我有超过 25 个 SQS 队列,不想重复我一一提到 SQS 队列的代码。是否有一种有效的方法(更短的代码)来使用编程创建警报?
这是 CloudFormation 模板的 YAML 代码。在此,我提到了我现有队列中的一个队列。
Parameters:
SQSAlarm:
Type: String
Description: Alarm for existing SQS Queues
Default: Queue1
SQSAlarm:
Type: String
Description: Alarm for existing SQS Queues
Default: Queue3
Resources:
MyAlarm:
Type: AWS::CloudWatch::Alarm
Properties:
AlarmName:
!Ref SQSAlarm
MetricName: "QueueName"
Namespace: AWS/SQS
Statistic: Average
Period: 60
EvaluationPeriods: 1
Threshold: 60
ComparisonOperator: GreaterThanThreshold
MetricName: ApproximateAgeOfOldestMessage
AlarmActions:
- arn:aws:sns:us-east-1:589557565942:SQS-Oldest-Message
Dimensions:
- Name: QueueName
Value: !Ref SQSAlarm
CloudFormation (CFN) 中没有循环。唯一适合您的解决方案如下:
- 创建 CFN macro,自动生成队列定义。
- 创建一个 custom resource 以使用 lambda 函数和 AWS SDK“手动”创建队列。
- 使用nested stack,仍然需要重复,但也许会更短。
- 不要使用 CFN。还有其他更强大的 IaC 工具,例如 Terraform,它们具有循环和范围编程技术组合,可以轻松自动生成这些队列。