AWS: перенос среды выполнения go1.x в al2 для развертывания функций Lambda.
Я пытаюсь перейти на среду выполнения AL2 из go1.x, чтобы развернуть функции Lambda, но у меня возникли проблемы с тем, как это сделать. Я использую Serverless Framework для развертывания вместе с make. Вот Makefile, который я сейчас использую:
go_apps = bin/func1 bin/func2 bin/fun3
bin/% : functions/%.go functions/common.go
env GOOS=linux go build -ldflags="-s -w" -o $@ $< functions/common.go
build: $(go_apps)
clean:
rm -rf ./bin
deploy:
sls deploy --verbose
install: build deploy
Любая помощь будет принята с благодарностью
Обновление:я нашел эту статью, которая должна помочь с миграцией.
Я сообщу, когда реализую это и удостоверюсь, что оно работает так, как задумано.
Обновление 2:
Мне удалось использовать SAM local для успешного тестирования своих функций в новой среде выполнения AL2 с помощью этого примера реализации AL2 на AWS с Go . Я переместил файл common.go в новый репозиторий и успешно создал с его помощью модуль go (который затем был импортирован в мои функции). Это только начало, поскольку мне еще предстоит развернуть свои функции через Serverless, но тем временем это может быть полезно другим.
1 ответ
Я обнаружил, что на самом деле вы можете выполнить сборку go с двумя (или более) файлами и запустить/развернуть ее в среде выполнения AL2. Убедитесь, что ваш второй файл (в моем случае common.go) имеет общедоступные функции/структуры. Также обязательно обновите github.com/aws/aws-lambda-go/lambda до последней версии. И используйте этот образец репозитория GitHub , чтобы помочь с вашим бессерверным шаблоном.
Это образец моего Makefile, который используется для развертывания на AWS Lambda с использованием бессерверной инфраструктуры:
go_bootstrap = func1 func2 func3 \
build:
for n in $(go_bootstrap); \
do \
echo "$$n"; \
env GOOS=linux go build -o ./build/"$$n"/bootstrap functions/common.go functions/"$$n".go; \
zip -j ./build/zip/"$$n".zip ./build/"$$n"/bootstrap; \
done
deploy:
sls deploy --verbose
install: build deploy