我已经将告警对象存储为变量:alarm = cloudwatch.Alarm(AlarmName)
然后,我修改了警报变量的一个属性,并希望将此更新发送到AWS。
我尝试了方法alarm.load()或alarm.reload(),但是这些方法从AWS中提取数据并覆盖我的局部变量。
此外,我尝试使用cloudwatch资源和方法put_metric_alarm,但它不接受参数警报对象:
AttributeError: cloudwatch.ServiceResource对象没有属性“put_metric_alarm”
有什么办法推动本地警报定义做AWS吗?
发布于 2022-04-16 03:05:10
put_metric_alarm用于创建和更新 CloudWatch警报。下面是一个使用boto3将本地警报定义推送到AWS的示例。
import boto3
# Create CloudWatch client
cloudwatch = boto3.client('cloudwatch')
# CloudWatch Resource
cwres = boto3.resource('cloudwatch')
# Get Alarm Configuration
alarm = cwres.Alarm('My Alarm')
# Update alarm copying all attributes from local alarm variable
cloudwatch.put_metric_alarm(
AlarmName=alarm.name,
ComparisonOperator=alarm.comparison_operator,
EvaluationPeriods=alarm.evaluation_periods,
MetricName=alarm.metric_name,
Namespace=alarm.namespace,
Period=120, # changed attribute
Statistic=alarm.statistic,
Threshold=alarm.threshold,
ActionsEnabled=alarm.actions_enabled,
AlarmDescription=alarm.alarm_description,
Dimensions=alarm.dimensions,
Unit=alarm.unit
)正如我们在“历史”选项卡中看到的,“我的警报”被更新了。

这是复制所有属性的一条很长的路,因为API似乎不接受本地警报对象。
https://stackoverflow.com/questions/71885838
复制相似问题