Тревога CloudWatch в Boto3 дает ошибку в блоке - PullRequest
0 голосов
/ 05 сентября 2018

Я пытаюсь узнать о тревогах в облачных часах на boto3, например, amazon ec2, как их можно запрограммировать в пользовательских скриптах.

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

Этот пример кода, который дает мне ошибку, как я могу это исправить?

1 Ответ

0 голосов
/ 05 сентября 2018

ValidationError задокументировано (немного) здесь .

Ошибка вызвана плохо отформатированным элементом в списке AlarmActions. Это должно быть отформатировано как:

ARN: AWS: SWF: область : счет-идентификатор : действия / действия / AWS_EC2.InstanceId.Reboot / 1,0

Тем временем у вас есть

ARN: AWS: SWF: нас-запад-2: {} CUSTOMER_ACCOUNT: действия / действия / AWS_EC2.InstanceId.Reboot / 1,0

Так что вам просто нужно обновить, чтобы использовать реальный идентификатор учетной записи AWS, где у вас есть {CUSTOMER_ACCOUNT}.

...