Go modules builder fails when using local module with provisioned.AL2 runtime
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ả
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:
- create a new go application
sam init --name sam-app --runtime go1.x --dependency-manager mod --app-template hello-world - 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
}
- 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
- 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
- Build the function
sam build - 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"}%
-
Update the sam template to use Amazon Linux 2 instead of the managed runtime.
-
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
- Create a new Makefile in the hello-world function directory and add
build-HelloWorldFunction:
GOOS=linux go build -o bootstrap
cp ./bootstrap $(ARTIFACTS_DIR)/.
- 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
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- 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.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Issue khác của aws/aws-lambda-builders
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 76/100
aws/aws-lambda-builders#925 · 1 reaction ·
-
Độ khó 4/5 3-5 ngày Mức phù hợp với người mới 64/100
aws/aws-lambda-builders#924 · 1 bình luận · 1 reaction ·
-
Bug: PythonUvBuilder fails to build app with dependencies on editable installs in the workspace Đang mởstage/needs-triage
Độ khó 3/5 1-2 ngày Mức phù hợp với người mới 25/100
aws/aws-lambda-builders#892 ·
-
stage/needs-triage type/feature
Độ khó 4/5 3-5 ngày Mức phù hợp với người mới 38/100
aws/aws-lambda-builders#839 · 2 bình luận · 1 reaction ·
-
area/build contributors/good-first-issue contributors/welcome type/feature
Độ khó 4/5 3-5 ngày Mức phù hợp với người mới 38/100
aws/aws-lambda-builders#831 · 3 bình luận ·
Tất cả issue của aws/aws-lambda-builders
Issue tương tự
-
[Bug] reef-hermes tells me to resume with hermes --resume, which does not work from my shell Đang mởarea: harness bug status: needs-triage
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 75/100
Human-Agent-Society/reef#625 ·
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 70/100
-
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 80/100
learningequality/kolibri#15351 · 2 bình luận ·
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 75/100
-
Name consistency Đang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 75/100
eellak/triplestore#65 · 1 bình luận ·