AWS: migre el tiempo de ejecución go1.x a al2 para implementar funciones Lambda

AWS: migre el tiempo de ejecución go1.x a al2 para implementar funciones Lambda

Estoy intentando migrar al tiempo de ejecución AL2 desde go1.x para implementar mis funciones Lambda, pero tengo problemas para hacerlo. Utilizo Serverless Framework para la implementación junto con make. Aquí está el Makefile que uso actualmente:

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

Cualquier ayuda sería muy apreciada.


Actualizar: Encontré este artículo que debería ayudar con la migración.

Informaré cuando lo haya implementado y me aseguraré de que funcione según lo previsto.


Actualización 2:

Pude usar SAM local para probar mis funciones en el nuevo tiempo de ejecución AL2 con éxitocon la ayuda de esta implementación AL2 de muestra de AWS con Go. Moví mi archivo common.go a un nuevo repositorio y construí un módulo go exitosamente con él (que luego se importó a mis funciones). Esto es solo el comienzo, ya que todavía tengo que implementar mis funciones a través de Serverless, pero mientras tanto, esto podría ser útil para otros.

Respuesta1

Descubrí que, de hecho, puedes hacer una compilación con dos (o más) archivos y ejecutarlos/implementarlos en un tiempo de ejecución AL2. Asegúrese de que su segundo archivo (en mi caso, common.go) tenga las funciones/estructuras accesibles públicamente. Además, asegúrese de actualizar github.com/aws/aws-lambda-go/lambda a la última versión. Y usa estomuestra de repositorio de githubpara ayudarle con su plantilla sin servidor.

Este es un ejemplo de mi Makefile que se utiliza para implementar en AWS Lambda utilizando el marco 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

información relacionada