0
je suis writtnig une fonction lambda sur le cadre serverless qui resturns l'état de l'instance, j'ai utilisé boto3afficher les paramètres « ec2.describe.instance.status
describe_instance_status()
mon code fonctionne très bien, je reçois tous les paramètres, mais Je veux afficher uniquement l'état de l'instance (en attente | en cours | d'arrêt).
voici mon code:
import json
import boto3
import logging
import sys
import os
import traceback
# Import local dependencies sys.path.append('./site-packages')
from botocore.exceptions import ClientError from pprint import pprint
#setup simple logging for INFO logger = logging.getLogger()
logger.setLevel(logging.INFO)
from botocore.exceptions import ClientError
def instance_status(event, context):
"""Take an instance Id and return its status"""
body = {}
status_code = 200
try:
client = boto3.client('ec2')
r = client.describe_instance_status(InstanceIds=['i-070ad081'])
body["message"] = str(r)
except Exception as e:
print(traceback.format_exc())
status_code = 500
body["message"] = str(e)
#need a json body to return the status
response = {
"statusCode": status_code,
"body": json.dumps(body)
}
return response
est ici la sortie http:
{
"message": "{u'InstanceStatuses': [{u'InstanceId': 'i-070ad071', u'InstanceState': {u'Code': 16, u'Name': 'running'}, u'AvailabilityZone': 'us-east-1a', u'SystemStatus': {u'Status': 'ok', u'Details': [{u'Status': 'passed', u'Name': 'reachability'}]}, u'InstanceStatus': {u'Status': 'ok', u'Details': [{u'Status': 'passed', u'Name': 'reachability'}]}}], 'ResponseMetadata': {'RetryAttempts': 0, 'HTTPStatusCode': 200, 'RequestId': '35684bc5-2ab5-4225-8f8b-66bb217866f8', 'HTTPHeaders': {'transfer-encoding': 'chunked', 'vary': 'Accept-Encoding', 'server': 'AmazonEC2', 'content-type': 'text/xml;charset=UTF-8', 'date': 'Tue, 26 Sep 2017 09:36:15 GMT'}}}"
}
https://docs.python.org/2/library/json.html – BMW