java - 使用 Java 中的 Cloudwatch 警报停止 AWS EC2 实例

标签 java amazon-web-services amazon-ec2 amazon-cloudwatch

到目前为止,我是这样设置闹钟的:

dim = new Dimension()
        .withName("InstanceId")
        .withValue(hashedId);

alarmreq = new PutMetricAlarmRequest()
              .withDimensions(dim)
              .withMetricName(metricName)
              .withNamespace(nameSpace)
              .withAlarmName(alarmName)
              .withActionsEnabled(true)
              .withStatistic(statistic)
              .withThreshold(threshold)
              .withComparisonOperator("GreaterThanThreshold")
              .withPeriod(period)
              .withEvaluationPeriods(evaluationPeriods)
              .withAlarmActions("arn:aws:sns:us-west-2:xxxxxxxxx:NotifyMe");

gCloudWatch.putMetricAlarm(alarmreq);

这会为执行 SNS NotifyMe 的指定实例创建一个警报。但是,我找不到任何有关如何添加到此警报或 SNS 的文档,以在警报进入“警报”状态时停止或终止实例。

我唯一的线索是,虽然 .withAlarmActions() 只接受 SNS 或 SQS 操作,但 SNS 可以发出 HTTP 请求,我在最坏的情况下也可以使用该请求。

我还知道可以将此功能添加到警报中,因为在 AWS Web 界面上,您可以创建一个停止或终止实例的警报。

最佳答案

通过在亚马逊论坛提问找到了答案。基本上,我错误地认为 withAlarmActions 只接受 SNS 或 SQS 操作。它还可以接受“arn:aws:automate:us-west-2:ec2:stop”形式的停止或终止操作。编辑后修复的最后一行代码如下所示:

.withAlarmActions("arn:aws:sns:us-west-2:xxxxxxxxx:NotifyMe", "arn:aws:automate:us-west-2:ec2:stop");

如果有人好奇的话,这里是完整的答案。 https://forums.aws.amazon.com/thread.jspa?messageID=466061&#466061

关于java - 使用 Java 中的 Cloudwatch 警报停止 AWS EC2 实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17455979/

相关文章:

java - 方法类型的 Spring REST 最佳实践

java - 如何将 Bean Validation (JSR 303) 约束显式分配给 bean 属性?

java - Groovy-List、ArrayList 和 Object Array 的区别

python - 亚马逊 S3 权限

amazon-web-services - AWS Lambda 是否在单独的 Firecracker VM 中运行每个调用?

python - 如何在 AWS Elastic Beanstalk 上设置 HTTPS

mysql - 什么 Amazon AWS AMI for web.py, mysql

java - 将十六进制字符串转换为 IP 地址

amazon-web-services - GitLab Ci/Cd 到 Amazon LightSail

amazon-web-services - 查找AWS实例是否正在运行Amazon Linux 1或2?