#bash #amazon-web-services #aws-lambda #packer
#bash #amazon-веб-сервисы #aws-lambda #упаковщик
Вопрос:
Я пытался использовать packer для создания AMI из Lambda для конкретного варианта использования. Я использую пользовательскую среду выполнения bash. Я вытащил пакет packer и распаковал его.
Но когда я пытаюсь запустить исполняемый файл, Lambda выдает меня со статусом выхода 1, и ошибка также не является описательной. Я пытался исправить это несколькими способами-
-
Добавьте путь к каталогу упаковщика в $ PATH, но я не могу получить исходный файл .profile или .bashrc, он говорит, что они не существуют.
-
Пытался добавить слой с исполняемым файлом 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. Из журнала я не вижу, что память или время выходят за пределы, это в значительной степени в зоне. Однако я попробовал, и это не помогло.