Remarque sur boto3 (AWS SDK for Python)

Essayez d'utiliser le nouveau boto3. Référence → http://boto3.readthedocs.org/en/latest/

Installation

Avec pip. Ver est 0.0.6.

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

Obtenir des informations sur l'instance EC2

Reproduisez quelque chose comme $ aws ec2 describe-instances.

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

Il revient sous forme de type dict. Vous pouvez le laisser tel quel, mais si vous essayez de le convertir en JSON, une erreur se produira.

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

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

Après quelques recherches, il semble être non compatible avec le type datetime, bson ( Binary JSON) et ainsi de suite.

Cependant, sur un Mac, cela semble inutile si seul bson est inclus, insérez donc pymongo et ainsi de suite.

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

Si c'est comme ça, ce sont des informations de toutes les instances, donc affinez-les avec des filtres. Lorsque restreint par l'ID d'instance.

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

Lorsque le filtre est transformé en variable et réduit par le nom du tag.

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

Fonctionnement de l'instance EC2

Démarrer / arrêter etc. pour l'objet d'instance. Tout d'abord, essayez d'obtenir l'objet d'instance en spécifiant l'ID d'instance.

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

L'autre est de l'obtenir à partir de la collection Instances. Par exemple, à partir du nom de la balise. Cependant, cela prend plus de temps car il boucle toutes les instances.

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

Opérez sur l'objet d'instance acquis par l'une ou l'autre méthode. Arrêt de l'instance. Attendre est possible. L'auto-boucle n'est plus nécessaire.

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

Lancement de l'instance. Il est également possible d'attendre.

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

Remarque sur boto3 (AWS SDK for Python)
Informations d'identification utilisées par Boto3 (AWS SDK for Python)
Développement du kit SDK AWS pour Python (Boto3) dans Visual Studio 2017
Utilisez AWS SDK for Python (boto) dans un environnement Proxy
Obtenir des informations sur les notes à l'aide du SDK Evernote pour Python 3
Appeler Polly à partir du kit SDK AWS pour Python
Utiliser l'API Resource plutôt que l'API client dans AWS SDK for Python (Boto3)
Notes depuis 3 mois depuis que j'ai commencé Python
Provisionnement de flotte avec AWS IoT SDK for Python v2
Remarque: Python
Script de création de couche AWS pour python
Note de Python
Remarque pour Pyjulia appelant Julia depuis Python
30/10/2016 else pour Python3> pour:
python [pour moi]
Note d'apprentissage Python_002
Remarque: décorateur Python
Note de programmation Python
[Python] Note d'apprentissage 1
Note d'apprentissage Python_004
Note d'apprentissage Python_003
[Remarque] openCV + python
Note du débutant Python
Remarque pour le formatage des nombres avec la fonction de format python
Gérez bien AWS avec la bibliothèque Python Boto
À propos de Python for loop
[Note] future déclaration ~ Python ~
Bases de Python ② pour déclaration
[AWS IoT] Enregistrer des éléments dans AWS IoT à l'aide du SDK AWS IoT Python
[Note] L'histoire de la configuration du SDK pour Python d'Azure IoT Hub sur Linux
[AWS] Exploitez SQS à partir du SDK (envoi / réception) [Python] [Node.js]
[Python] Local → Procédure de téléchargement de fichiers vers S3 (boto3)
À propos de Python, pour ~ (plage)
Manuel python pour les débutants
Refactoring des outils utilisables avec Python
Prise en charge de l'environnement d'exécution Python 2.7 sur AWS Lambda (à partir de 2020.1)
Toolchain pour Python pour Android
Remarque pour faire de python un démon
Remarque: python Skeleton Nya
Créer une couche pour AWS Lambda Python dans Docker
Note d'introduction Python Tkinter
Remarques sur l'écriture des fichiers de configuration pour Python Remarque: configparser
OpenCV pour les débutants en Python
Installez Python (pour Windows)
[Python] pour une erreur d'instruction
Maintenance de l'environnement Python pour les projets
Installez AWS SDK pour PHP avec AWS EC2 (PHP7.2 + Apache2.4.41 + OPCashe + Composer)
[Note] Liste des commandes de base pour la construction d'un environnement python / conda
Essayez une recherche similaire de recherche d'images à l'aide du SDK Python [Recherche]
Créez un Twitter BOT avec le SDK GoogleAppEngine pour Python
Mémo Python (pour moi): Array
Prise en charge de Fabric pour Python 3
Liste Python, pour instruction, dictionnaire
[Python] Scraping dans AWS Lambda
Flux d'apprentissage pour les débutants en Python
Procédure d'installation de Python 3.6 [pour Windows]