
Estou tentando migrar para o tempo de execução AL2 de go1.x para implantar minhas funções Lambda, mas estou tendo problemas para fazer isso. Eu uso o Serverless Framework para implantação em conjunto com o make. Aqui está o Makefile que uso atualmente:
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
Qualquer ajuda seria muito apreciada
Atualizar: Encontrei este artigo que deve ajudar na migração
Informarei quando eu o implementar e garantir que funcione conforme o esperado
Atualização 2:
Consegui usar o SAM local para testar minhas funções no novo tempo de execução AL2 com sucessocom a ajuda deste exemplo de implementação AL2 da AWS com Go. Mudei meu arquivo common.go para um novo repositório e construí um módulo go com sucesso com ele (que foi então importado para minhas funções). Este é apenas o começo, pois ainda não implantei minhas funções via Serverless, mas enquanto isso pode ser útil para outras pessoas.
Responder1
Eu descobri que você pode de fato fazer um go build com dois (ou mais) arquivos e executá-lo/implantá-lo em um tempo de execução AL2. Certifique-se de que seu segundo arquivo (no meu caso, common.go) tenha as funções/estruturas acessíveis publicamente. Além disso, certifique-se de atualizar github.com/aws/aws-lambda-go/lambda para a versão mais recente. E use issoexemplo de repositório do githubpara ajudar com seu modelo sem servidor.
Este é um exemplo do meu Makefile usado para implantar no AWS Lambda usando a estrutura 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