Boto3 更新 Cloudwatch 警报

Boto3 Update Cloudwatch alarm

我已将警报对象存储为变量: alarm = cloudwatch.Alarm(AlarmName)
然后我修改了警报变量的一个属性,我想将此更新发送到 AWS。
我尝试了 alarm.load()alarm.reload() 方法,但这些方法从 AWS 提取数据并覆盖我的本地变量。

此外,我尝试使用 cloudwatch 资源和方法 put_metric_alarm,但它不接受作为参数的警报对象:
AttributeError: 'cloudwatch.ServiceResource' 对象没有属性 'put_metric_alarm'

有什么方法可以将本地警报定义推送到 AWS 吗?

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 似乎不接受本地警报对象。