
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