Golang Lambda 배포

3106 단어 golambdaaws

문제



종종 우리는 SAM이나 서버리스를 사용하지 않고 AWS에서 Golang Lambda를 구축하고 배포하는 간단한 방법을 원합니다.

CLI를 사용하여 간단한 Golang 람다를 배포하는 방법을 살펴보겠습니다. 이 예는 나중에 이를 CI/CD 파이프라인에 통합하기 위한 빌딩 블록을 제공합니다.

비디오 연습



서면 지침은 아래에 있지만 Golang Lambda를 배포하는 방법을 보여주는 간단한 비디오 연습이 있습니다.



해결책



1) 전제 조건



이 문서에서는 다음을 이미 설치했다고 가정합니다.
  • 고랑
  • AWS CLI
  • json 구문 분석을 위한 jq 패키지
  • Lambda를 배포하는 데 필요한 IAM 권한

  • 2) main.go 파일 생성



    루트 디렉터리에 main.go라는 파일을 만듭니다.

    다음은 빠른 Hello World 스크립트입니다.

    package main
    
    import (
        "log"
    
        "context"
    
        "github.com/aws/aws-lambda-go/events"
        "github.com/aws/aws-lambda-go/lambda"
    )
    
    func handler(ctx context.Context, request events.APIGatewayProxyRequest) error {
        log.Println("HelloWorld from Golang Lambda")
    
        return nil
    }
    
    func main() {
        lambda.Start(handler)
    }
    


    3) 메이크파일 생성



    루트 디렉터리에 Makefile이라는 파일을 만듭니다.

    함수 이름 및 지역에 대한 매개변수를 편집하십시오.

    export GOOS=linux
    export GOARCH=amd64
    export CGO_ENABLED=0
    .DEFAULT_GOAL := deploy
    
    deploy:
        go build -o hello
        zip -r function.zip hello
        aws lambda update-function-code --function-name "BlogHelloWorldExample" --zip-file fileb://function.zip --region="eu-west-1" | jq .    
    


    참고: 오류Makefile:6: *** missing separator. Stop.가 표시되면 공백을 탭으로 바꾸십시오.

    4) Golang 종속성 설치



    이 단계는 한 번만 수행하면 됩니다.

    go mod init example.com/demo
    go get github.com/aws/aws-lambda-go/events
    go get github.com/aws/aws-lambda-go/lambda
    


    5) 메이크파일 실행



    다음 CLI 명령을 실행하여 예제 Lambda를 빌드, 압축 및 배포합니다.

    make deploy
    


    이제 다음과 유사한 출력이 표시됩니다.

    {
      "FunctionName": "BlogHelloWorldExample",
      "FunctionArn": "arn:aws:lambda:eu-west-1:xyz:function:BlogHelloWorldExample",
      "Runtime": "go1.x",
      "Role": "arn:aws:iam::xyz:role/service-role/BlogHelloWorldExample-role-xyz",
      "Handler": "hello",
      "CodeSize": xyz,
      "Description": "",
      "Timeout": 15,
      "MemorySize": 512,
      "LastModified": "2022-06-07T11:09:28.000+0000",
      "CodeSha256": "xyz",
      "Version": "$LATEST",
      "TracingConfig": {
        "Mode": "PassThrough"
      },
      "RevisionId": "xyz",
      "State": "Active",
      "LastUpdateStatus": "InProgress",
      "LastUpdateStatusReason": "The function is being created.",
      "LastUpdateStatusReasonCode": "Creating"
    }
    


    요약



    그게 다야! 이제 람다가 배포되어야 합니다. 이것이 파이프라인 구축을 위한 빠른 출발점이 되기를 바랍니다.

    좋은 웹페이지 즐겨찾기