AWS: migre o tempo de execução go1.x para al2 para implantar funções Lambda

AWS: migre o tempo de execução go1.x para al2 para implantar funções Lambda

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

informação relacionada