boto3 (AWS SDK für Python) Hinweis

Versuchen Sie es mit dem neuen boto3. Referenz → http://boto3.readthedocs.org/en/latest/

Installation

Mit pip. Ver ist 0.0.6.

$ sudo pip install boto3
$ sudo pip list | grep boto3
boto3 (0.0.6)

Informationen zur EC2-Instanz abrufen

Reproduzieren Sie so etwas wie "$ aws ec2 description-instance".

>>> import boto3
>>> client = boto3.client('ec2')
>>> response = client.describe_instances()
>>> type(response)
<type 'dict'>

Es wird als Diktattyp zurückgegeben. Sie können es so lassen, wie es ist, aber wenn Sie versuchen, es in JSON zu konvertieren, tritt ein Fehler auf.

>>> import json
>>> res_json = json.dumps(response)

TypeError: datetime.datetime(2014, 4, 4, 11, 34, 13, tzinfo=tzutc()) is not JSON serializable

Nach ein wenig Recherche scheint es [nicht kompatibel mit dem Datum / Uhrzeit-Typ] zu sein (http://stackoverflow.com/questions/11875770/how-to-overcome-datetime-datetime-not-json-serializable-in-python), bson ( Binäres JSON) und so weiter.

Auf einem Mac scheint es jedoch nutzlos zu sein, wenn nur bson enthalten ist, fügen Sie also Pymongo usw. ein.

$ sudo pip install pymongo
>>> from bson import json_util
>>> res_json = json.dumps(response, default=json_util.default)
>>> type(res_json)
<type 'str'>

Wenn es so ist, wie es ist, handelt es sich um Informationen aller Instanzen. Grenzen Sie sie daher mit Filtern ein. Wenn durch Instanz-ID eingegrenzt.

>>> response = client.describe_instances(Filters=[{'Name':'instance-id','Values':['i-XXXXXXXX']}])

Wenn Filter zu einer Variablen gemacht und durch den Tag-Namen eingegrenzt wird.

>>> f = [{'Name':'tag-value', 'Values':['XXXXXXXX']}]
>>> response = client.describe_instances(Filters=f)

EC2-Instanzbetrieb

Start / Stopp usw. für das Instanzobjekt. Versuchen Sie zunächst, das Instanzobjekt abzurufen, indem Sie die Instanz-ID angeben.

>>> import boto3
>>> ec2 = boto3.resource('ec2')
>>> instance = ec2.Instance('i-XXXXXXXX')
>>> instance.private_ip_address
"10.X.X.X"

Das andere ist, es aus der Instances Collection zu bekommen. Zum Beispiel aus dem Tag-Namen. Es dauert jedoch länger, da alle Instanzen durchlaufen werden.

>>> import boto3
>>> ec2 = boto3.resource('ec2')
>>> tag_name = "TAG_NAME"
>>> instance = [i for i in ec2.instances.all() for t in i.tags if t["Value"] == tag_name][0]
>>> instance.private_ip_address
"10.X.X.X"

Arbeiten Sie mit dem Instanzobjekt, das mit einer der beiden Methoden erfasst wurde. Instanz stoppen. Warten ist möglich. Die Selbstschleife ist nicht mehr erforderlich.

>>> instance.stop()
{u'StoppingInstances': [{u'InstanceId': 'i-XXXXXXXX', u'CurrentState': {u'Code': 64, u'Name': 'stopping'}, u'PreviousState': {u'Code': 16, u'Name': 'running'}}], 'ResponseMetadata': {'HTTPStatusCode': 200, 'RequestId': 'AAAAAAAA-AAAA-AAAA-AAAA-AAAAAAAAAAAA'}}
>>> instance.wait_until_stopped()
>>> instance.state
{u'Code': 80, u'Name': 'stopped'}

Instanzstart. Dies ist auch möglich zu warten.

>>> instance.start()
{u'StartingInstances': [{u'InstanceId': 'i-XXXXXXXX', u'CurrentState': {u'Code': 0, u'Name': 'pending'}, u'PreviousState': {u'Code': 80, u'Name': 'stopped'}}], 'ResponseMetadata': {'HTTPStatusCode': 200, 'RequestId': 'AAAAAAAA-AAAA-AAAA-AAAA-AAAAAAAAAAAA'}}
>>> instance.wait_until_running()
>>> instance.state
{u'Code': 16, u'Name': 'running'}

Recommended Posts

boto3 (AWS SDK für Python) Hinweis
Von Boto3 verwendete Anmeldeinformationen (AWS SDK für Python)
Entwicklung des AWS SDK für Python (Boto3) in Visual Studio 2017
Verwenden Sie das AWS SDK für Python (boto) in einer Proxy-Umgebung
Mit dem Evernote SDK für Python 3 erhalten Sie Informationen zu Notizen
Rufen Sie Polly aus dem AWS SDK für Python auf
Verwenden Sie die Ressourcen-API anstelle der Client-API im AWS SDK für Python (Boto3).
Notizen für 3 Monate, seit ich Python gestartet habe
Flottenbereitstellung mit AWS IoT SDK für Python v2
Hinweis: Python
AWS Layer Creation Script für Python
Python-Notiz
Hinweis für Pyjulia, die Julia aus Python anruft
2016-10-30 sonst für Python3> für:
Python [für mich]
Python lernen note_002
Hinweis: Python-Dekorator
Python-Programmierhinweis
[Python] Lernnotiz 1
Python lernen note_004
Python lernen note_003
[Hinweis] openCV + Python
Python-Anfängernotiz
Hinweis zum Formatieren von Zahlen mit der Python-Formatierungsfunktion
Verwalten Sie AWS mit der Python-Bibliothek Boto
Über Python für Schleife
[Anmerkung] zukünftige Aussage ~ Python ~
Python-Grundlagen ② für Anweisung
[AWS IoT] Registrieren Sie Dinge in AWS IoT mithilfe des AWS IoT Python SDK
[Hinweis] Die Geschichte des Einrichtens des SDK für Python von Azure IoT Hub unter Linux
[AWS] SQS über SDK betreiben (Senden / Empfangen) [Python] [Node.js]
[Python] Lokal → Verfahren zum Hochladen von Dateien in S3 (boto3)
Über Python für ~ (Bereich)
Python Lehrbuch für Anfänger
Refactoring-Tools, die mit Python verwendet werden können
Unterstützung für Python 2.7-Laufzeit auf AWS Lambda (ab 2020.1)
Toolchain für Python für Android
Beachten Sie, dass Python ein Daemon ist
Hinweis: Python Skeleton Nya
Erstellen Sie in Docker eine Ebene für AWS Lambda Python
Python Tkinter Primer Hinweis
Hinweise zum Schreiben von Konfigurationsdateien für Python Hinweis: configparser
OpenCV für Python-Anfänger
Installieren Sie Python (für Windows)
[Python] für Anweisungsfehler
Wartung der Python-Umgebung für Projekte
Installieren Sie das AWS SDK für PHP mit AWS EC2 (PHP7.2 + Apache2.4.41 + OPCashe + Composer).
[Hinweis] Liste der grundlegenden Befehle zum Erstellen einer Python / Conda-Umgebung
Probieren Sie die ähnliche Suche von Image Search mit Python SDK [Search] aus.
Erstellen Sie einen Twitter-BOT mit dem GoogleAppEngine SDK für Python
Python-Memo (für mich): Array
Fabric unterstützt Python 3
Python-Liste, für Anweisung, Wörterbuch
[Python] Scraping in AWS Lambda
Lernablauf für Python-Anfänger
Installationsverfahren für Python 3.6 [für Windows]