2016-10-18 4 views
0

Итак, у меня есть этот сценарий boto3, который запускает экземпляр ec2. Но когда я запускаю эту лямбда-функцию, функция describe_instance_status возвращает пустой массив InstanceStatus. Таким образом, программа завершается, заявив индекс нашего диапазона. Какие-либо предложения?boto3 выпуск проверка состояние экземпляра ec2

import boto3 
from time import sleep 
region = 'your region name' 


def lambda_handler(event, context): 

cye_production_web_server_2 = 'abcdefgh' 

ec2 = boto3.client('ec2',region) 

start_response = ec2.start_instances(
    InstanceIds=[cye_production_web_server_2, ], 
    DryRun=False 
) 

print(
    'instance id:', 
    start_response['StartingInstances'][0]['InstanceId'], 
    'is', 
    start_response['StartingInstances'][0]['CurrentState']['Name'] 
) 

status = None 
counter = 5 
while (status != 'ok' and counter > 0): 
    status_response = ec2.describe_instance_status(
     DryRun=False, 
     InstanceIds=[cye_production_web_server_2, ], 
    ) 
    status = status_response['InstanceStatuses'][0]['SystemStatus']  ['Status'] 
    sleep(5) # 5 second throttle 
    counter=counter-1 

print(status_response) 
print('status is', status.capitalize()) 
+0

Вы проверили журнал лямбды (облачного) для любого сообщения об ошибке? – helloV

+0

индекс индекса за пределами диапазона: IndexError Traceback (последний последний звонок): Файл «/var/task/lambda_function.py», строка 31, в lambda_handler status = status_response ['InstanceStatuses'] [0] ['SystemStatus '] [' Status '] IndexError: индекс списка за пределами допустимого диапазона –

+0

Вы уверены, что это работало как отдельный сценарий? – helloV

ответ

1

По умолчанию описываются только запущенные экземпляры, если не указано иное.

Может потребоваться несколько минут, чтобы экземпляр мог войти в рабочее состояние.

Ваша программа никогда не будет спать, поскольку она не работает на предыдущем шаге, где статус на самом деле не возвращается на первой итерации.

Используйте параметр «IncludeAllInstances», который является логическим параметром запроса, когда true, включает состояние работоспособности для всех экземпляров. Когда false, включает состояние работоспособности только для запуска экземпляров. Значение по умолчанию - false

Смежные вопросы