Создание AMI из AWS Lambda

#bash #amazon-web-services #aws-lambda #packer

#bash #amazon-веб-сервисы #aws-lambda #упаковщик

Вопрос:

Я пытался использовать packer для создания AMI из Lambda для конкретного варианта использования. Я использую пользовательскую среду выполнения bash. Я вытащил пакет packer и распаковал его.

Но когда я пытаюсь запустить исполняемый файл, Lambda выдает меня со статусом выхода 1, и ошибка также не является описательной. Я пытался исправить это несколькими способами-

  1. Добавьте путь к каталогу упаковщика в $ PATH, но я не могу получить исходный файл .profile или .bashrc, он говорит, что они не существуют.

  2. Пытался добавить слой с исполняемым файлом packer в Lambda, все еще не помогает.

Код —

     echo "Installing Packer..."
    curl -qL -o packer.zip https://releases.hashicorp.com/packer/1.1.1/packer_1.1.1_linux_amd64.zip
    echo "Unzipping Packer"
    unzip packer.zip
    echo "Changing permissions on packer"
    chmod 777 ./packer
    echo "Running Packer Validate"
    ./packer validate ${LAMBDA_TASK_ROOT}/packer.json
  

Журнал консоли Lambda —

     % Total    % Received % Xferd  Average Speed   Time    Time     
    Time  Current Dload  Upload   Total   Spent    Left  Speed

    0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0
    100 15.8M  100 15.8M    0     0  48.3M      0 --:--:-- --:--:-- --:--:-- 49.2M
    END RequestId: 14cb72cf-c7ff-4a4d-a1c1-99d145395aef
    REPORT RequestId: 14cb72cf-c7ff-4a4d-a1c1-99d145395aef  Init 
    Duration: 61.04 ms  Duration: 5623.92 ms    Billed Duration: 5700 ms    Memory Size: 1408 MB    Max Memory Used: 274 MB 
    RequestId: 14cb72cf-c7ff-4a4d-a1c1-99d145395aef Error: Runtime 
    exited with error: exit status 1
    Runtime.ExitError
  

Кстати, можно ли что-нибудь сделать, чтобы лямбда-журналы были более описательными? Он даже не выводит инструкции echo, если выполнение завершается неудачей?

Кто-нибудь сталкивался с подобной ситуацией раньше? Любые зацепки могли бы помочь.

Заранее спасибо за помощь 🙂

Комментарии:

1. Можете ли вы скопировать / вставить точный текст, который вы получаете из журнала консоли, и исходный код в свою лямбда-функцию?

2. Это выглядит как ошибка после curl команды. Множество бессерверных фреймворков позволяют использовать образы Docker. Позволяет ли AWS Lambda использовать образ Hashi Packer, или он все еще отстает по функциональности такого рода? Вы могли бы сразу перейти к packer validate этому пути.

3. Что такое «пользовательская среда выполнения bash» — есть ли у вас сценарий настройки или документация по этой пользовательской среде? unzip Доступно ли, например, в среде? Можете ли вы настроить параметры bash (например, добавить bash -x для вывода трассировки команд)?

Ответ №1:

Не пытайтесь запускать Packer в Lambda, используйте AWS ECS Fargate и запустите официальный образ docker.

Ответ №2:

Среда выполнения Lambda смонтирована в файловой системе, доступной только для чтения, за исключением /tmp , которая предоставляет 512 МБ свободного пространства. Добавьте cd /tmp в начало вашего скрипта Bash, чтобы управлять загруженным файлом в папке temp.

Ответ №3:

если вы хотите создать AMI с использованием lambda в определенное время, например, запустить lambda с помощью задания cron и создать резервную копию AMI ec2, вы можете следить за моим блогом :

https://knowihave.blogspot.com/2018/09/aws-auto-ami-backup-across-all-region.html

код также доступен в моем git :

https://github.com/harsh4870/AWS-auto-ami-backup-across-all-region

здесь я написал код на node js и запустил lambda с помощью cloud watch. если вы столкнетесь с какой-либо проблемой, вы можете обратиться к самому простому способу, который я нашел, создать резервную копию AMi с помощью lambda

и в связи с вашей ошибкой я бы посоветовал еще раз проверить path и импортировать настройки в ошибку path только для lambda it cloud, в противном случае поделитесь скриншотом вашего кода, чтобы это могло помочь

Комментарии:

1. @ChandrasekharMalladi можете ли вы увеличить время ожидания lambda? и ограничение памяти из консоли lambda и повторный запуск для tetsing.

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