diff --git a/.github/workflows/aws_go_forwarder.yml b/.github/workflows/aws_go_forwarder.yml new file mode 100644 index 000000000..28e9b2974 --- /dev/null +++ b/.github/workflows/aws_go_forwarder.yml @@ -0,0 +1,48 @@ +name: Go Forwarder + +on: + pull_request: + paths: + - "aws/logs_monitoring_go/**" + +jobs: + lint: + runs-on: ubuntu-24.04-arm + defaults: + run: + working-directory: aws/logs_monitoring_go + steps: + - uses: actions/checkout@v3 + - uses: actions/setup-go@v5 + with: + go-version-file: aws/logs_monitoring_go/go.mod + - name: golangci-lint + uses: golangci/golangci-lint-action@v9 + with: + working-directory: aws/logs_monitoring_go + + test: + runs-on: ubuntu-24.04-arm + defaults: + run: + working-directory: aws/logs_monitoring_go + steps: + - uses: actions/checkout@v3 + - uses: actions/setup-go@v5 + with: + go-version-file: aws/logs_monitoring_go/go.mod + - name: Run tests + run: go test -race ./... + + build: + runs-on: ubuntu-24.04-arm + defaults: + run: + working-directory: aws/logs_monitoring_go + steps: + - uses: actions/checkout@v3 + - uses: actions/setup-go@v5 + with: + go-version-file: aws/logs_monitoring_go/go.mod + - name: Build binary + run: GOOS=linux GOARCH=arm64 go build -o bootstrap ./cmd/forwarder/ diff --git a/aws/logs_monitoring_go/.gitignore b/aws/logs_monitoring_go/.gitignore new file mode 100644 index 000000000..de75ab822 --- /dev/null +++ b/aws/logs_monitoring_go/.gitignore @@ -0,0 +1,3 @@ +.aws-sam +samconfig.toml +template.yaml \ No newline at end of file diff --git a/aws/logs_monitoring_go/Makefile b/aws/logs_monitoring_go/Makefile new file mode 100644 index 000000000..a3878f199 --- /dev/null +++ b/aws/logs_monitoring_go/Makefile @@ -0,0 +1,33 @@ +.PHONY: build package test lint clean sam-build sam-invoke sam-deploy build-ForwarderFunction + +BINARY_NAME := bootstrap +ZIP_NAME := forwarder.zip + +build: + GOOS=linux GOARCH=arm64 go build -o $(BINARY_NAME) ./cmd/forwarder/ + +# Used by `sam build` +build-ForwarderFunction: + GOOS=linux GOARCH=arm64 go build -o $(ARTIFACTS_DIR)/bootstrap ./cmd/forwarder/ + +package: build + zip $(ZIP_NAME) $(BINARY_NAME) + +test: + go test -race ./... + +lint: + golangci-lint run ./... + +clean: + rm -f $(BINARY_NAME) $(ZIP_NAME) + +sam-build: + sam build + +EVENT ?= events/cloudwatch_logs.json +sam-invoke: sam-build + sam local invoke ForwarderFunction -e $(EVENT) + +sam-deploy: sam-build + sam deploy diff --git a/aws/logs_monitoring_go/cmd/forwarder/main.go b/aws/logs_monitoring_go/cmd/forwarder/main.go new file mode 100644 index 000000000..347a2a716 --- /dev/null +++ b/aws/logs_monitoring_go/cmd/forwarder/main.go @@ -0,0 +1,23 @@ +// Unless explicitly stated otherwise all files in this repository are licensed +// under the Apache License Version 2.0. +// This product includes software developed at Datadog (https://www.datadoghq.com/). +// Copyright 2026-Present Datadog, Inc. + +package main + +import ( + "context" + "encoding/json" + "log" + + "github.com/aws/aws-lambda-go/lambda" +) + +func handleRequest(ctx context.Context, event json.RawMessage) error { + log.Printf("Received event: %s", string(event)) + return nil +} + +func main() { + lambda.Start(handleRequest) +} diff --git a/aws/logs_monitoring_go/go.mod b/aws/logs_monitoring_go/go.mod new file mode 100644 index 000000000..99422bf68 --- /dev/null +++ b/aws/logs_monitoring_go/go.mod @@ -0,0 +1,5 @@ +module github.com/DataDog/datadog-serverless-functions/aws/logs_monitoring_go + +go 1.26 + +require github.com/aws/aws-lambda-go v1.53.0 diff --git a/aws/logs_monitoring_go/go.sum b/aws/logs_monitoring_go/go.sum new file mode 100644 index 000000000..0d766f423 --- /dev/null +++ b/aws/logs_monitoring_go/go.sum @@ -0,0 +1,10 @@ +github.com/aws/aws-lambda-go v1.53.0 h1:uAMv6W/vCP/L494BAUSxe+8KVBIPK+SGPyapFt3FuMk= +github.com/aws/aws-lambda-go v1.53.0/go.mod h1:dpMpZgvWx5vuQJfBt0zqBha60q7Dd7RfgJv23DymV8A= +github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= +github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= +github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/stretchr/testify v1.7.2 h1:4jaiDzPyXQvSd7D0EjG45355tLlV3VOECpq10pLC+8s= +github.com/stretchr/testify v1.7.2/go.mod h1:R6va5+xMeoiuVRoj+gSkQ7d3FALtqAAGI1FQKckRals= +gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= +gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=