AWS Sam Deployed Golang lambda functions runtime error

0

I have golang lambda functions deployed via aws sam. I followed the guide for compiling for the provided.al2 runtime, yet I am getting the following error: Error: fork/exec /var/task/bootstrap: exec format error Runtime.InvalidEntrypoint

Sam Template looks like this:

UserPutFunction:
    Type: AWS::Serverless::Function 
    Metadata:
      BuildMethod: makefile
    Properties:
      CodeUri: ./
      Handler: bootstrap
      Runtime: provided.al2
      Architectures:
        - arm64
      Events:
        CatchAll:
          Type: Api # More info about API Event Source: https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md#api
          Properties:
            Path: /user
            Method: POST

And the Makefile is this:

build-UserPutFunction:
	set GOOS=linux
	set GOARCH=amd64
	go build -o $(ARTIFACTS_DIR)\bootstrap ./lambda/user/user_put

Am I missing something?

已提問 8 個月前檢視次數 888 次
1 個回答
0

Hello.

The error is caused by a problem with the architecture of the container image.
In this case, amd64 is used in Makefile.
So, I think you need to set Architectures to "x86_64".
https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/sam-resource-function.html#sam-function-architectures

UserPutFunction:
    Type: AWS::Serverless::Function 
    Metadata:
      BuildMethod: makefile
    Properties:
      CodeUri: ./
      Handler: bootstrap
      Runtime: provided.al2
      Architectures:
        - x86_64
      Events:
        CatchAll:
          Type: Api # More info about API Event Source: https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md#api
          Properties:
            Path: /user
            Method: POST
profile picture
專家
已回答 8 個月前

您尚未登入。 登入 去張貼答案。

一個好的回答可以清楚地回答問題並提供建設性的意見回饋,同時有助於提問者的專業成長。

回答問題指南