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
Другие вопросы по тегам