AWS: Перенос среды выполнения go1.x в al2 для развертывания функций Lambda

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 для тестирования моих функций в новой среде выполнения 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

Связанный контент