
Я пытаюсь перейти на среду выполнения 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 для тестирования моих функций в новой среде выполнения AL2.с помощью этого примера реализации AL2 AWS с Go. Я переместил свой файл common.go в новый репозиторий и успешно построил с ним модуль go (который затем был импортирован в мои функции). Это только начало, так как мне еще предстоит развернуть свои функции через Serverless, но это может быть полезно другим в то же время.
решение1
Я обнаружил, что вы можете фактически сделать сборку go с двумя (или более) файлами и запустить/развернуть ее в среде выполнения AL2. Убедитесь, что ваш второй файл (в моем случае common.go) имеет общедоступные функции/структуры. Также убедитесь, что вы обновили github.com/aws/aws-lambda-go/lambda до последней версии. И используйте этопример репозитория githubдля помощи с вашим безсерверным шаблоном.
Это пример моего Makefile, который используется для развертывания в AWS Lambda с использованием фреймворка Serverless:
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