ansible ec2_metric_alarm не будет подключаться к политике автоматического масштабирования

Итак, я пытаюсь использовать задачу ansible ec2_metric_alarm, чтобы создать тревогу облачного наблюдения, которая отслеживает мою группу автоматического масштабирования и активирует политику автоматического масштабирования, если использование процессора для ASG превышает или ниже определенной точки.

   - ec2_metric_alarm:
      aws_access_key: '{{ ami_access }}'
      aws_secret_key: '{{ ami_secret }}'
      state: present
      region: "{{regi}}"
      name: "{{item.names}}"
      metric: "CPUUtilization"
      namespace: "AWS/EC2"
      statistic: Average
      comparison: "{{item.compare}}"
      threshold: "{{item.limits}}"
      period: 60
      evaluation_periods: 1
      unit: "Percent"
      description: "{{item.desc}}"
      dimensions: {'AutoScalingGroupName':'{{auto_sc}}'}
      alarm_actions: "{{item.pol}}"
     with_items:
      - names: "cpuUP_{{auto_sc}}"
        compare: ">="
        limits: "20.0"
        desc: "This will alarm when the average cpu usage of the ASG is         greater than 20% for 1 minute"
        pol: "cpuUP_{{auto_sc}}_policy"
      - names: "cpuDown_{{auto_sc}}"
        compare: "<="
        limits: "10.0"
        desc: "This will alarm when the average cpu usage of the ASG is less than 10% for 1 minute"
        pol: "cpuDown_{{auto_sc}}_policy"

По какой-то причине я не могу просто использовать буквальное имя моей политики автоматического масштабирования (это будет «cpuDown_test3_policy» и «cpuUP_test3_policy»), и мне нужно использовать так называемый «синтаксис arn», потому что мои сообщения об ошибках продолжают жаловаться на недопустимый синтаксис Arn. .

Как найти синтаксис arn или преобразовать имена политик автоматического масштабирования в синтаксис arn?

Для справки вот сообщение об ошибке, которое я получаю, когда пытаюсь запустить книгу как есть:

TASK [ec2_metric_alarm]     ********************************************************
failed: [localhost] => (item={u'pol': u'cpuUP_test3_policy', u'desc': u'This wil
l alarm when the average cpu usage of the ASG is greater than 20% for 1     minute',
 u'compare': u'>=', u'limits': u'20.0', u'names': u'cpuUP_test3'}) =>     {"failed":
 true, "item": {"compare": ">=", "desc": "This will alarm when the average     cpu u
sage of the ASG is greater than 20% for 1 minute", "limits": "20.0",     "names": "c
puUP_test3", "pol": "cpuUP_test3_policy"}, "msg": "BotoServerError: 400 Bad     Requ
est\n<ErrorResponse xmlns=\"http://monitoring.amazonaws.com/doc/2010-08-    01/\">\n
  <Error>\n    <Type>Sender</Type>\n    <Code>ValidationError</Code>\n        <Messa
ge>Invalid arn syntax: cpuUP_test3_policy</Message>\n  </Error>\n      <RequestId>d8
97c79a-01db-11e6-92d5-5fa534a149e9</RequestId>\n</ErrorResponse>\n"}
failed: [localhost] => (item={u'pol': u'cpuDown_test3_policy', u'desc':     u'This w
ill alarm when the average cpu usage of the ASG is less than 10% for 1     minute', 
u'compare': u'<=', u'limits': u'10.0', u'names': u'cpuDown_test3'}) =>     {"failed"
: true, "item": {"compare": "<=", "desc": "This will alarm when the average     cpu 
usage of the ASG is less than 10% for 1 minute", "limits": "10.0", "names":     "cpu
Down_test3", "pol": "cpuDown_test3_policy"}, "msg": "BotoServerError: 400     Bad Re
quest\n<ErrorResponse xmlns=\"http://monitoring.amazonaws.com/doc/2010-08-    01/\">
\n  <Error>\n    <Type>Sender</Type>\n    <Code>ValidationError</Code>\n        <Mes
sage>Invalid arn syntax: cpuDown_test3_policy</Message>\n  </Error>\n      <RequestI
d>d8b33ea6-01db-11e6-82db-8bfc9e3af9a2</RequestId>\n</ErrorResponse>\n"}

person Alex Cohen    schedule 14.04.2016    source источник


Ответы (1)


Прочтите эту ссылку, в которой объясняется название ресурса Amazon. Вот отрывок из предоставленной ссылки.

Имена ресурсов Amazon (ARN) однозначно идентифицируют ресурсы AWS. Нам требуется ARN, когда вам нужно однозначно указать ресурс во всем AWS, например в политиках IAM, тегах Amazon Relational Database Service (Amazon RDS) и вызовах API.

Вот пример того, как должен выглядеть alarm_actions: ..

alarm_actions: ["arn:aws:autoscaling:region:account-id:scalingPolicy:policyid:autoScalingGroupName/groupfriendlyname:policyname/policyfriendlyname"]

Вы должны сначала создать политику масштабирования и использовать зарегистрированный вывод, чтобы захватить arn политики масштабирования, которую вы хотите использовать.

Вот пример ..

- name: Scale Out policy
  local_action:
  module: ec2_scaling_policy
    state: present
    region: "{{ aws_region }}"
    name: "Name-ScaleOutPolicy"
    adjustment_type: "ChangeInCapacity"
    asg_name: "name_of_autoscale_group"
    scaling_adjustment: "-1"
    min_adjustment_step: "1"
    cooldown: "30"
  register: so_result

Теперь вы можете настроить метрический сигнал для использования политики масштабирования arn, например.

alarm_actions: ['{{ so_result["arn"] }}']
person linuxdynasty    schedule 14.04.2016