Hacktoberfest 2026: những issue maintainer đã đánh dấu cho tháng Mười, đang mở và phù hợp người mới. Xem issue Hacktoberfest

Go modules builder fails when using local module with provisioned.AL2 runtime

Đang mở
#285 2 bình luận 0 reaction 0 người được giao Xem trên GitHub

Chưa có ai nhận issue này.

Đánh giá

Độ khó
4/5
Thời gian dự kiến
3-5 ngày
Mức phù hợp với người mới
35/100
Loại issue
Lỗi
Độ rõ ràng
Khá rõ ràng
Mức độ hoạt động
Đình trệ
Công nghệ
go
Lĩnh vực
build-system

Hướng nghiên cứu

Tái hiện lỗi bằng sam build với template provided.al2 được cung cấp, phần thay thế go.mod của function và Makefile được nêu trong báo cáo. Bắt đầu từ các bước CustomMakeBuilder:CopySource và CustomMakeBuilder:MakeBuild, sau đó xác minh rằng phần thay thế cục bộ ../models vẫn khả dụng trong quá trình build. Hoàn tất khi cùng một ứng dụng Go build thành công với provided.al2.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Mô tả

area/workflow/go_modules maintainer/need-response

Description:
Using sam build in go projects with a dependency on a local module fails when the function runtime is Runtime: provided.al2

Steps to reproduce the issue:

  1. create a new go application sam init --name sam-app --runtime go1.x --dependency-manager mod --app-template hello-world
  2. Create a new module (here is the example I used). In a new folder called models, initialise a new module using go mod init hello-go/models

add a new go file called person.go add this code

package models

type Person struct {
	FirstName string `json:"first_name,omitempty"`
	LastName  string `json:"last_name,omitempty"`
}

func (p *Person) FullName() string {

	return p.FirstName + " " + p.LastName
}
  1. Open the main.go file for the hello0world function. Import "hello-go/models" and replace the return statement with this

	person := models.Person{FirstName: "John", LastName: "Doe"}

	return events.APIGatewayProxyResponse{
		Body:       fmt.Sprintf("Hello %s, your ip address is %v", person.FullName(), string(ip)),
		StatusCode: 200,
	}, nil

  1. Open the function go.mod file and add make sure the dependency is replaced to point to the local module
require (
	github.com/aws/aws-lambda-go v1.23.0
	hello-go/models v0.0.1
)

module hello-world

go 1.17

replace hello-go/models => ../models

  1. Build the function sam build
  2. If you run sam local invoke "HelloWorldFunction" you should see the output (with your IP address)
{"statusCode":200,"headers":null,"multiValueHeaders":null,"body":"Hello John Doe, your ip address is 127.0.0.1\n"}% 
  1. Update the sam template to use Amazon Linux 2 instead of the managed runtime.

  2. In the function definition replace handler and runtime properties, and the Metadata resource attribute

  HelloWorldFunction:
    Type: AWS::Serverless::Function # More info about Function Resource: https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md#awsserverlessfunction
    Properties:
      CodeUri: hello-world/
      Handler: bootstrap 
      Runtime: provided.al2
      Tracing: Active # https://docs.aws.amazon.com/lambda/latest/dg/lambda-x-ray.html
      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: /hello
            Method: GET
      Environment: # More info about Env Vars: https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md#environment-object
        Variables:
          PARAM1: VALUE
    Metadata:
      BuildMethod: makefile
  1. Create a new Makefile in the hello-world function directory and add
build-HelloWorldFunction:
	GOOS=linux go build -o bootstrap
	cp ./bootstrap $(ARTIFACTS_DIR)/.
  1. Run sam build. The build now fails.

Observed result:

sam build
Building codeuri: /Users/sliedig/go/src/hello-go-al2/hello-world runtime: provided.al2 metadata: {'BuildMethod': 'makefile'} functions: ['HelloWorldFunction']
Running CustomMakeBuilder:CopySource
Running CustomMakeBuilder:MakeBuild
Current Artifacts Directory : /Users/sliedig/go/src/hello-go-al2/.aws-sam/build/HelloWorldFunction

Build Failed
Error: CustomMakeBuilder:MakeBuild - Make Failed: main.go:9:2: hello-go-al2/models@v0.0.1: replacement directory ../models does not exist
make[1]: *** [build-HelloWorldFunction] Error 1
make: *** [build] Error 1

Expected result:
I would expect the sam build system to correctly build my application irrespective of whether I am using go as a managed runtime or on AL2.

Additional environment details (Ex: Windows, Mac, Amazon Linux etc)
OS: Darwin x64 20.6.0
go version go1.17.1 darwin/amd64
SAM CLI, version 1.32.0

Ngôn ngữ chính
Python
Star
381
Fork
162
Merge trung bình
1 ngày 1 giờ
Pull request đã merge (30 ngày)
2

Hướng dẫn đóng góp

Mở hướng dẫn đóng góp

Bắt đầu từ đâu

  1. Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
  2. Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
  3. Fork repository và làm thay đổi trên một nhánh.
  4. Mở pull request có tham chiếu số hiệu của issue.

Issue khác của aws/aws-lambda-builders

Tất cả issue của aws/aws-lambda-builders

Issue tương tự

Thêm issue về Python

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.