AWS Lambda python описывает исключение

рабочий код:

import boto3
def lambda_handler(event, context):
    ec2 = boto3.client('ec2')

    # Get list of regions
    regions = ec2.describe_regions().get('Regions',[] )

    # Iterate over regions
    for region in regions:
        print("*************** Checking region  --   %s " % region['RegionName'])
        reg = region['RegionName']
        print(reg)

Выход:

*************** Checking region  --   eu-north-1 
eu-north-1
*************** Checking region  --   ap-south-1 
ap-south-1
*************** Checking region  --   eu-west-3 
eu-west-3
*************** Checking region  --   eu-west-2 
eu-west-2
*************** Checking region  --   eu-west-1

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

import boto3
def lambda_handler(event, context):
    ec2 = boto3.client('ec2')

    # Get list of regions
    regions = ec2.describe_regions().get('Regions',[] )

    # Iterate over regions
    for region in regions:
        print("*************** Checking region  --   %s " % region['RegionName'])
        reg = region['RegionName']
        print(reg)
        print ("+++++++++++++ Starting EC2 Instances now -----------------") 
        client = boto3.client('ec2', region_name=reg)
        response = client.describe_instances()

ошибка вывода:

Response:
{
  "errorMessage": "2019-03-14T18:08:00.104Z 5fb67a9a-3bf9-40e3-ad56 Task timed out after 3.00 seconds"
}

Request ID:
"5fb67a9a-3bf9-40e3-ad56"

Function Logs:
START RequestId: 5fb67a9a-3bf9-40e3-ad56 Version: $LATEST
*************** Checking region  --   eu-north-1 
eu-north-1
+++++++++++++ Starting EC2 Instances now -----------------
*************** Checking region  --   ap-south-1 
ap-south-1
+++++++++++++ Starting EC2 Instances now -----------------
END RequestId: 5fb67a9a-3bf9-40e3-ad56
REPORT RequestId: 5fb67a9a-3bf9-40e3-ad56-Duration: 3003.21 ms  Billed Duration: 3000 ms    Memory Size: 128 MB Max Memory Used: 79 MB  
2019-03-14T18:08:00.104Z 5fb67a9a-3bf9-40e3-ad56-Task timed out after 3.00 seconds

я дал все разрешения лямбда-роли для доступа к ресурсам. Может ли кто-нибудь помочь мне, что я делаю неправильно и как узнать, в чем ошибка?

Lambda, кажется, истекает, можете ли вы добавить try/catch вокруг вызова client.describe_instances()? И, возможно, немного увеличьте время ожидания, посмотрите, есть ли у вас какие-либо ошибки

Deiv 14.03.2019 19:36

Работает после увеличения времени ожидания ... спасибо

aws developer 15.03.2019 06:04
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
2
2
216
1

Ответы 1

Ваш код выполнил итерацию eu-north-1 и ap-south-1 успешно, но затем истекло время ожидания после тайм-аута Lambda по умолчанию, равного 3 секундам. Вам нужно либо ускорить выполнение кода, либо увеличить время ожидания Lambda.

  1. Перейдите к своему Лямбда-консоль
  2. Найдите свою функцию и откройте ее.
  3. Прокрутите вниз и найдите «Тайм-аут» в разделе «Основные настройки».
  4. Увеличьте время ожидания (15 минут — текущий максимум)
  5. Нажмите Сохранить вверху

К вашему сведению, настоятельно рекомендуется не увеличивать его до максимального времени ожидания, если вы столкнетесь с проблемой, это может привести к тому, что он будет работать намного дольше, чем необходимо. Рад, что это сработало, хотя :)

Deiv 15.03.2019 14:33

Другие вопросы по теме