boto3 中的 cloudwatch 警报给出单位错误

cloudwatch alarm in boto3 gives error in unit

我正在尝试学习 boto3、amazon ec2 实例上的 cloudwatch 警报如何在自定义脚本中对其进行编程。

import boto3
import time
# Create CloudWatch client
cloudwatch = boto3.client('cloudwatch')

# Create alarm with actions enabled
cloudwatch.put_metric_alarm(
    AlarmName='Web_Server_CPU_Utilization',
    ComparisonOperator='GreaterThanThreshold',
    EvaluationPeriods=1,
    MetricName='CPUUtilization',
    Namespace='AWS/EC2',
    Period=60,
    Statistic='Average',
    Threshold=70.0,
    ActionsEnabled=True,
    AlarmActions=[
      'arn:aws:swf:us-west-2:{CUSTOMER_ACCOUNT}:action/actions/AWS_EC2.InstanceId.Reboot/1.0'
    ],
    AlarmDescription='Alarm when server CPU exceeds 70%',
    Dimensions=[
        {
          'Name': 'InstanceId',
          'Value': 'INSTANCE_ID'
        },
    ],
    Unit='Seconds'
)

但是在执行上述程序时出现错误

Traceback (most recent call last):
  File "D:\expt2\cloudwatch alarm in action.py", line 27, in <module>
    Unit='Seconds'
  File "E:\installation2\python3\lib\site-packages\botocore\client.py", line 314, in _api_call
    return self._make_api_call(operation_name, kwargs)
  File "E:\installation2\python3\lib\site-packages\botocore\client.py", line 612, in _make_api_call
    raise error_class(parsed_response, operation_name)
botocore.exceptions.ClientError: An error occurred (ValidationError) when calling the PutMetricAlarm operation: Unknown

此示例代码出现错误,我该如何解决?

ValidationError 被记录(一点点)here

错误是由 AlarmActions 列表中的格式错误的项目引起的。格式应如下:

arn:aws:swf:region:account-id:action/actions/AWS_EC2.InstanceId.Reboot/1.0

与此同时你有

arn:aws:swf:us-west-2:{CUSTOMER_ACCOUNT}:action/actions/AWS_EC2.InstanceId.Reboot/1.0

所以您只需要更新以使用您拥有 {CUSTOMER_ACCOUNT}.

的真实 AWS 账户 ID