2016-04-14 4 views
3

Also versuche ich mit der Ansible-Task ec2_metric_alarm einen Cloud-Watch-Alarm zu erstellen, der meine Auto-Scaling-Gruppe überwacht und eine automatische Skalierungsrichtlinie aktiviert, wenn die CPU-Auslastung für die ASG höher ist oder unter einem bestimmten Punkt.ansible ec2_metric_alarm wird nicht an die automatische Skalierungsrichtlinie angehängt

- 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" 

Aus irgendeinem Grund habe ich einfach nicht die wörtliche Namen meiner automatische Skalierung Politik und ich brauche (die „cpuDown_test3_policy“ und „cpuUP_test3_policy“ wäre) verwenden, um etwas zu verwenden, um eine „arn Syntax“, weil meine Fehlermeldungen genannt beschwert sich über eine ungültige Arn-Syntax.

Wie finde ich die arn-Syntax oder konvertiere meine Auto-Skalierungs-Policy-Namen in arn-Syntax?

Als Referenz hier ist die Fehlermeldung erhalte ich, wenn ich versuche mein Textbuch zu laufen wie:

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"} 

Antwort

4

Bitte lesen Sie diesen Link, die Amazon Resource Name. Hier ist ein Auszug aus dem darin enthaltenen Link erklärt.

Amazon Ressourcennamen (ARNs) identifizieren AWS-Ressourcen eindeutig. Wir benötigen einen ARN, wenn Sie eine Ressource in allen AWS eindeutig angeben müssen, z. B. in IAM-Richtlinien, Tags für den Amazon-relationalen Datenbankdienst (Amazon RDS) und API-Aufrufe. Hier

ist ein Beispiel dafür, was alarm_actions: aussehen sollte ..

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

Sie sollten eine Skalierung Politik 1. Erstellen und Verwenden der registrierten Ausgabe der arn der Skalierung Politik greifen Sie verwenden möchten . Hier

ist ein Beispiel ..

- 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 

Jetzt können Sie Ihren metrischen Alarm die Skalierung Politik arn zu bedienen, wie so.

alarm_actions: ['{{ so_result["arn"] }}'] 
+0

Das funktionierte dank! –

Verwandte Themen