AWS: Lambda 함수를 배포하기 위해 go1.x 런타임을 al2로 마이그레이션

AWS: Lambda 함수를 배포하기 위해 go1.x 런타임을 al2로 마이그레이션

Lambda 함수를 배포하기 위해 go1.x에서 AL2 런타임으로 마이그레이션하려고 하는데 어떻게 해야 할지 문제가 있습니다. 저는 make와 함께 배포를 위해 Serverless Framework를 사용합니다. 현재 내가 사용하는 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 로컬을 사용하여 새 AL2 런타임에서 내 기능을 성공적으로 테스트할 수 있었습니다.Go를 사용한 AWS 샘플 AL2 구현의 도움으로. common.go 파일을 새 저장소로 이동하고 이를 사용하여 go 모듈을 성공적으로 구축했습니다(그런 다음 내 기능으로 가져왔습니다). 아직 서버리스를 통해 기능을 배포하지 않았기 때문에 이는 시작에 불과하지만 그동안 다른 사람들에게 도움이 될 수 있습니다.

답변1

실제로 두 개 이상의 파일로 go 빌드를 수행하고 이를 AL2 런타임에 실행/배포할 수 있다는 것을 알았습니다. 두 번째 파일(제 경우에는 common.go)에 공개적으로 액세스할 수 있는 함수/구조체가 있는지 확인하세요. 또한 github.com/aws/aws-lambda-go/lambda를 최신 버전으로 업데이트했는지 확인하세요. 그리고 이것을 사용하세요github 저장소 샘플서버리스 템플릿을 지원하는 데 도움이 됩니다.

다음은 서버리스 프레임워크를 사용하여 AWS Lambda에 배포하는 데 사용되는 Makefile의 샘플입니다.

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

관련 정보