[PYTHON] Informationen zu EC2-Instanzen mit beliebigen Präfixen im Instanznamen mit boto abrufen

Was ist Boto?

Es scheint ein SDK für Python zu sein, das AWS betreibt. (Ich möchte einen Codenamen für andere SDKs als Python

http://aws.amazon.com/jp/sdkforpython/

Vorbereitung

Installation

Die Eingabe mit dem Befehl pip scheint einfach zu sein

$ sudo yum install python-pip
$ sudo pip install boto

Anmeldeinformationen festlegen (AWS_ACCESS_KEY_ID und AWS_SECRET_ACCESS_KEY)

Ich möchte keinen festen Code schreiben, deshalb definiere ich ihn in der Einstellungsdatei. Anscheinend scheint es in der Reihenfolge "/etc/boto.cfg", "~ / .boto" zu suchen, und dieses Mal möchte ich es für jeden Benutzer behalten, also definiere es in ~ / .boto gemäß dem folgenden Format

[Credentials]
aws_access_key_id = <your access key>
aws_secret_access_key = <your secret key>

https://code.google.com/p/boto/wiki/BotoConfig

Extra: Ich bin süchtig danach. .. ..

Ich konnte es nicht in der Dokumentation finden, aber wenn ich mir die Boto-Implementierung anschaue, prüft es, ob "AWS_CREDENTIAL_FILE" in der Umgebungsvariablen definiert ist, und wenn es definiert ist, gibt die Logik dieser Einstellung Priorität.

https://github.com/boto/boto/blob/b9dbaad430fc35160d86fb921c4c1f75d66b6ddf/boto/pyami/config.py#L66-L77

Beim Importieren von Boto ist zunächst ein Fehler in der ConfigPaser-Klasse aufgetreten, der zu "Eh ???" wurde. Die Ursache war, dass der Header (erste Zeile) der in AWS_CREDENTIAL_FILE festgelegten Datei die Zeichenfolge "==========" enthielt. Ich glaube nicht, dass jemand unter dem gleichen Fehler leidet, aber als Referenz. (Es ist ein Rätsel, warum ein solcher Header überhaupt verwendet wurde.

Versuchen Sie zu implementieren

import boto
import boto.ec2
from boto.ec2.connection import EC2Connection
from boto.ec2.regioninfo import RegionInfo
import re

def get_ec2_instances(region_end_point, re_pt):
    region = RegionInfo(endpoint = region_end_point)
    ec2_connection = boto.ec2.connection.EC2Connection(region = region)

    result = []
    instances = [i for r in ec2_connection.get_all_instances() for i in r.instances]
    for i in instances:
        if re_pt.match(i.tags['Name']):
            result.append(i)

    return result

if __name__ == "__main__":
    re_pt = re.compile('production')
    ec2_instance_list = get_ec2_instances('ec2.ap-northeast-1.amazonaws.com', re_pt)

    print(ec2_instance_list)

Jetzt können Sie die EC2-Instanzinformationen mit dem Präfix "Produktion" als Instanznamen aus der Region Tokio abrufen.

Impressionen etc.

Recommended Posts

Informationen zu EC2-Instanzen mit beliebigen Präfixen im Instanznamen mit boto abrufen
Code-Server-Online-Umgebung (3) Starten Sie eine EC2-Instanz mit Boto3
Stoppen Sie eine Instanz mit einem bestimmten Tag in Boto3
Informationen erhalten Sie mit zabbix api
Holen Sie sich Alembic-Informationen mit Python