diff --git a/.github/workflows/unittest.yml b/.github/workflows/unittest.yml index 9a27d62..e68717e 100644 --- a/.github/workflows/unittest.yml +++ b/.github/workflows/unittest.yml @@ -12,35 +12,21 @@ on: # A workflow run is made up of one or more jobs that can run sequentially or in parallel jobs: - build: + buildAndTest: runs-on: ubuntu-latest steps: # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it - name: Checkout code - uses: actions/checkout@v2 + uses: actions/checkout@v4 - name: Setup Go environment - uses: actions/setup-go@v2 + uses: actions/setup-go@v5 + with: + go-version: 1.22 - name: Checking compilation errors while generating image run: env GOOS=linux go build -o "sumologic-extension" "lambda-extensions/sumologic-extension.go" - test: - strategy: - matrix: - go-version: [1.14.x, 1.15.x] - os: [ubuntu-latest, macos-latest] - runs-on: ${{ matrix.os }} - - steps: - - name: Setup Go (version - ${{ matrix.go }}) - uses: actions/setup-go@v2 - with: - go-version: ${{ matrix.go }} - - - name: Checkout code - uses: actions/checkout@v2 - - name: Run Unit Tests run: go test ./... diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 73795f1..c92eee0 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -25,19 +25,46 @@ First of all, thanks for contributing!. Before contributing please read the [COD ```go build -o target/extensions/sumologic-extension lambda-extensions/sumologic-extension.go``` -## Unit Testing +## Testing - go test sumoclient_test.go -v + 1> Unit Testing locally -## Deploying the layer - * Change the *AWS_PROFILE* environment variable. - * Update the layer version in *config/version.go*. - * Use below command for creating and deploying layer - - cd scripts/ - sh zip.sh + - Go to root folder and run "go test ./..." + - Go to lambda-extensions folder and run "go test ./..." -## Integration Testing (Manual) + 2> Testing with Lambda function -Add your layer to lambda by following [docs](https://help.sumologic.com/03Send-Data/Collect-from-Other-Data-Sources/Collect_Logs_from_AWS_Lambda_using_Lambda_Extension) and test the function manually. Confirm that logs are coming to Sumo Logic. + Add the layer arn generated from build command output to your lambda function by following instructions in [docs](https://help.sumologic.com/03Send-Data/Collect-from-Other-Data-Sources/Collect_AWS_Lambda_Logs_using_an_Extension).Test by running the function manually. Confirm that logs are coming to Sumo Logic. + +## Releasing the layers + 1. Change the *AWS_PROFILE* environment variable using below command. The profile should point to sumocontent aws account. + `export AWS_PROFILE=` + 1. Update the layer version in *config/version.go*. + 1. Go to scripts folder + `cd scripts/` + 1. Change the layer_name variable in zip.sh to avoid replacing the prod. + 1. Run below command + `sh zip.sh` + +### Github Release + + - The new extension binary and zip files gets released automatically after the tags are pushed using Github actions(Refer tagged-release in https://github.com/marvinpinto/action-automatic-releases). + + Run below commands to create and push tags + + git tag -a v + + git push origin v + + - Add the sumologic-extension-amd64.tar.gz and sumologic-extension-arm64.tar.gz files manually from the target folder generated after running zip.sh. + - Update the release description with new layer arns and more details on what's changed. + + +### Upgrading to new golang versions +1. Make sure to install new go version. Preferably use [gvm](https://github.com/moovweb/gvm). +1. Update golang version in `go.mod` or run command `go mod edit -go `. +1. Run `go mod tidy`. This will update `go.sum` file and clean up unwanted dependencies. +1. Install `golangci-lint` by running command `brew install golangci-lint`. Go to `lambda-extensions` directory and run `golangci-lint run`, this will check for deprecated methods. Check enabled linters using `golangci-lint linters` command. +1. Install `govulncheck` by running command `go install golang.org/x/vuln/cmd/govulncheck@latest` and run `~/go/bin/govulncheck -mode=binary target/amd64/extensions/sumologic-extension`. this will find common security issues. +1. Run `go test ./...` to run the unit tests diff --git a/README.md b/README.md index c78fcef..6277c9c 100644 --- a/README.md +++ b/README.md @@ -60,51 +60,3 @@ For Full Change Log, please visit [Releases](https://github.com/SumoLogic/sumolo [github-release-badge]: https://img.shields.io/github/release/sumologic/sumologic-lambda-extensions/all.svg?label=release [github-release]: https://github.com/sumologic/sumologic-lambda-extensions/releases/latest - - -## Compiling - - `env GOOS=darwin go build -o "sumologic-extension" "lambda-extensions/sumologic-extension.go"` - - -## Building - This script assumes you have aws cli already configured. - - - Go to scripts folder - - Export Profile export AWS_PROFILE= - - Change the layer_name variable in zip.sh to avoid replacing the prod. - - Run below command - `sh zip.sh` - -## Release -Releasing new layer versions - -- Go to scripts folder -- Export Profile export AWS_PROFILE=. The profile should point to sumocontnet aws account. -- Run below command - `sh zip.sh` - - -- The new extension binary and zip files gets released automatically after the tags are pushed using Github actions(Refer tagged-release in https://github.com/marvinpinto/action-automatic-releases). - - Run below commands to create and push tags - - git tag -a v - - git push origin v - -- Add the sumologic-extension-amd64.tar.gz and sumologic-extension-arm64.tar.gz files manually from the target folder generated after running zip.sh. -- Update the release description with new layer arns and more details on what's changed. - -## Testing - - 1> Unit Testing locally - - - Go to root folder and run "go test ./..." - - - Go to lambda-extensions folder and run "go test ./..." - - 2> Testing with Lambda function - - Add the layer arn generated from build command output to your lambda function by following instructions in [docs](https://help.sumologic.com/03Send-Data/Collect-from-Other-Data-Sources/Collect_AWS_Lambda_Logs_using_an_Extension). - diff --git a/go.mod b/go.mod index 8438aaf..23243bc 100644 --- a/go.mod +++ b/go.mod @@ -1,13 +1,28 @@ module github.com/SumoLogic/sumologic-lambda-extensions -go 1.15 +go 1.22 require ( - github.com/aws/aws-sdk-go v1.35.23 - github.com/aws/aws-sdk-go-v2 v1.17.1 - github.com/aws/aws-sdk-go-v2/config v1.17.11 - github.com/aws/aws-sdk-go-v2/service/kms v1.18.16 - github.com/google/uuid v1.1.2 - github.com/sirupsen/logrus v1.7.0 - golang.org/x/sys v0.2.0 // indirect + github.com/aws/aws-sdk-go v1.51.25 + github.com/aws/aws-sdk-go-v2 v1.26.1 + github.com/aws/aws-sdk-go-v2/config v1.27.11 + github.com/aws/aws-sdk-go-v2/service/kms v1.31.0 + github.com/google/uuid v1.6.0 + github.com/sirupsen/logrus v1.9.3 +) + +require ( + github.com/aws/aws-sdk-go-v2/credentials v1.17.11 // indirect + github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.1 // indirect + github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.5 // indirect + github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.5 // indirect + github.com/aws/aws-sdk-go-v2/internal/ini v1.8.0 // indirect + github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.11.2 // indirect + github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.11.7 // indirect + github.com/aws/aws-sdk-go-v2/service/sso v1.20.5 // indirect + github.com/aws/aws-sdk-go-v2/service/ssooidc v1.23.4 // indirect + github.com/aws/aws-sdk-go-v2/service/sts v1.28.6 // indirect + github.com/aws/smithy-go v1.20.2 // indirect + github.com/jmespath/go-jmespath v0.4.0 // indirect + golang.org/x/sys v0.19.0 // indirect ) diff --git a/go.sum b/go.sum index abcef16..a135a21 100644 --- a/go.sum +++ b/go.sum @@ -1,31 +1,61 @@ github.com/aws/aws-sdk-go v1.35.23 h1:SCP0d0XvyJTDmfnHEQPvBaYi3kea1VNUo7uQmkVgFts= github.com/aws/aws-sdk-go v1.35.23/go.mod h1:tlPOdRjfxPBpNIwqDj61rmsnA85v9jc0Ps9+muhnW+k= +github.com/aws/aws-sdk-go v1.51.25 h1:DjTT8mtmsachhV6yrXR8+yhnG6120dazr720nopRsls= +github.com/aws/aws-sdk-go v1.51.25/go.mod h1:LF8svs817+Nz+DmiMQKTO3ubZ/6IaTpq3TjupRn3Eqk= github.com/aws/aws-sdk-go-v2 v1.17.1 h1:02c72fDJr87N8RAC2s3Qu0YuvMRZKNZJ9F+lAehCazk= github.com/aws/aws-sdk-go-v2 v1.17.1/go.mod h1:JLnGeGONAyi2lWXI1p0PCIOIy333JMVK1U7Hf0aRFLw= +github.com/aws/aws-sdk-go-v2 v1.26.1 h1:5554eUqIYVWpU0YmeeYZ0wU64H2VLBs8TlhRB2L+EkA= +github.com/aws/aws-sdk-go-v2 v1.26.1/go.mod h1:ffIFB97e2yNsv4aTSGkqtHnppsIJzw7G7BReUZ3jCXM= github.com/aws/aws-sdk-go-v2/config v1.17.11 h1:9JQUKwRN8oUqeOFIrNaH6RSPmmcNk1+bQrDka/f/bPc= github.com/aws/aws-sdk-go-v2/config v1.17.11/go.mod h1:cw6HIEr0FaZQfcoyRWYZpMfv4qAH19hZFZ5mglwWo3g= +github.com/aws/aws-sdk-go-v2/config v1.27.11 h1:f47rANd2LQEYHda2ddSCKYId18/8BhSRM4BULGmfgNA= +github.com/aws/aws-sdk-go-v2/config v1.27.11/go.mod h1:SMsV78RIOYdve1vf36z8LmnszlRWkwMQtomCAI0/mIE= github.com/aws/aws-sdk-go-v2/credentials v1.12.24 h1:yz4fhoMfgwymG0rU6q5eCydFhYNQxk9yrNjMA7L7xmg= github.com/aws/aws-sdk-go-v2/credentials v1.12.24/go.mod h1:prZpUfBu1KZLBLVX482Sq4DpDXGugAre08TPEc21GUg= +github.com/aws/aws-sdk-go-v2/credentials v1.17.11 h1:YuIB1dJNf1Re822rriUOTxopaHHvIq0l/pX3fwO+Tzs= +github.com/aws/aws-sdk-go-v2/credentials v1.17.11/go.mod h1:AQtFPsDH9bI2O+71anW6EKL+NcD7LG3dpKGMV4SShgo= github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.12.19 h1:E3PXZSI3F2bzyj6XxUXdTIfvp425HHhwKsFvmzBwHgs= github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.12.19/go.mod h1:VihW95zQpeKQWVPGkwT+2+WJNQV8UXFfMTWdU6VErL8= +github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.1 h1:FVJ0r5XTHSmIHJV6KuDmdYhEpvlHpiSd38RQWhut5J4= +github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.1/go.mod h1:zusuAeqezXzAB24LGuzuekqMAEgWkVYukBec3kr3jUg= github.com/aws/aws-sdk-go-v2/internal/configsources v1.1.25 h1:nBO/RFxeq/IS5G9Of+ZrgucRciie2qpLy++3UGZ+q2E= github.com/aws/aws-sdk-go-v2/internal/configsources v1.1.25/go.mod h1:Zb29PYkf42vVYQY6pvSyJCJcFHlPIiY+YKdPtwnvMkY= +github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.5 h1:aw39xVGeRWlWx9EzGVnhOR4yOjQDHPQ6o6NmBlscyQg= +github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.5/go.mod h1:FSaRudD0dXiMPK2UjknVwwTYyZMRsHv3TtkabsZih5I= github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.4.19 h1:oRHDrwCTVT8ZXi4sr9Ld+EXk7N/KGssOr2ygNeojEhw= github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.4.19/go.mod h1:6Q0546uHDp421okhmmGfbxzq2hBqbXFNpi4k+Q1JnQA= +github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.5 h1:PG1F3OD1szkuQPzDw3CIQsRIrtTlUC3lP84taWzHlq0= +github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.5/go.mod h1:jU1li6RFryMz+so64PpKtudI+QzbKoIEivqdf6LNpOc= github.com/aws/aws-sdk-go-v2/internal/ini v1.3.26 h1:Mza+vlnZr+fPKFKRq/lKGVvM6B/8ZZmNdEopOwSQLms= github.com/aws/aws-sdk-go-v2/internal/ini v1.3.26/go.mod h1:Y2OJ+P+MC1u1VKnavT+PshiEuGPyh/7DqxoDNij4/bg= +github.com/aws/aws-sdk-go-v2/internal/ini v1.8.0 h1:hT8rVHwugYE2lEfdFE0QWVo81lF7jMrYJVDWI+f+VxU= +github.com/aws/aws-sdk-go-v2/internal/ini v1.8.0/go.mod h1:8tu/lYfQfFe6IGnaOdrpVgEL2IrrDOf6/m9RQum4NkY= +github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.11.2 h1:Ji0DY1xUsUr3I8cHps0G+XM3WWU16lP6yG8qu1GAZAs= +github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.11.2/go.mod h1:5CsjAbs3NlGQyZNFACh+zztPDI7fU6eW9QsxjfnuBKg= github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.9.19 h1:GE25AWCdNUPh9AOJzI9KIJnja7IwUc1WyUqz/JTyJ/I= github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.9.19/go.mod h1:02CP6iuYP+IVnBX5HULVdSAku/85eHB2Y9EsFhrkEwU= +github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.11.7 h1:ogRAwT1/gxJBcSWDMZlgyFUM962F51A5CRhDLbxLdmo= +github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.11.7/go.mod h1:YCsIZhXfRPLFFCl5xxY+1T9RKzOKjCut+28JSX2DnAk= github.com/aws/aws-sdk-go-v2/service/kms v1.18.16 h1:KHzeOb0G5ZvaIOewRSs3iyHR5MeAKkIZ75tUJCO9ijg= github.com/aws/aws-sdk-go-v2/service/kms v1.18.16/go.mod h1:kZodDPTQjSH/qM6/OvyTfM5mms5JHB/EKYp5dhn/vI4= +github.com/aws/aws-sdk-go-v2/service/kms v1.31.0 h1:yl7wcqbisxPzknJVfWTLnK83McUvXba+pz2+tPbIUmQ= +github.com/aws/aws-sdk-go-v2/service/kms v1.31.0/go.mod h1:2snWQJQUKsbN66vAawJuOGX7dr37pfOq9hb0tZDGIqQ= github.com/aws/aws-sdk-go-v2/service/sso v1.11.25 h1:GFZitO48N/7EsFDt8fMa5iYdmWqkUDDB3Eje6z3kbG0= github.com/aws/aws-sdk-go-v2/service/sso v1.11.25/go.mod h1:IARHuzTXmj1C0KS35vboR0FeJ89OkEy1M9mWbK2ifCI= +github.com/aws/aws-sdk-go-v2/service/sso v1.20.5 h1:vN8hEbpRnL7+Hopy9dzmRle1xmDc7o8tmY0klsr175w= +github.com/aws/aws-sdk-go-v2/service/sso v1.20.5/go.mod h1:qGzynb/msuZIE8I75DVRCUXw3o3ZyBmUvMwQ2t/BrGM= github.com/aws/aws-sdk-go-v2/service/ssooidc v1.13.8 h1:jcw6kKZrtNfBPJkaHrscDOZoe5gvi9wjudnxvozYFJo= github.com/aws/aws-sdk-go-v2/service/ssooidc v1.13.8/go.mod h1:er2JHN+kBY6FcMfcBBKNGCT3CarImmdFzishsqBmSRI= +github.com/aws/aws-sdk-go-v2/service/ssooidc v1.23.4 h1:Jux+gDDyi1Lruk+KHF91tK2KCuY61kzoCpvtvJJBtOE= +github.com/aws/aws-sdk-go-v2/service/ssooidc v1.23.4/go.mod h1:mUYPBhaF2lGiukDEjJX2BLRRKTmoUSitGDUgM4tRxak= github.com/aws/aws-sdk-go-v2/service/sts v1.17.2 h1:tpwEMRdMf2UsplengAOnmSIRdvAxf75oUFR+blBr92I= github.com/aws/aws-sdk-go-v2/service/sts v1.17.2/go.mod h1:bXcN3koeVYiJcdDU89n3kCYILob7Y34AeLopUbZgLT4= +github.com/aws/aws-sdk-go-v2/service/sts v1.28.6 h1:cwIxeBttqPN3qkaAjcEcsh8NYr8n2HZPkcKgPAi1phU= +github.com/aws/aws-sdk-go-v2/service/sts v1.28.6/go.mod h1:FZf1/nKNEkHdGGJP/cI2MoIMquumuRK6ol3QQJNDxmw= github.com/aws/smithy-go v1.13.4 h1:/RN2z1txIJWeXeOkzX+Hk/4Uuvv7dWtCjbmVJcrskyk= github.com/aws/smithy-go v1.13.4/go.mod h1:Tg+OJXh4MB2R/uN61Ko2f6hTZwB/ZYGOtib8J3gBHzA= +github.com/aws/smithy-go v1.20.2 h1:tbp628ireGtzcHDDmLT/6ADHidqnwgF57XOXZe6tp4Q= +github.com/aws/smithy-go v1.20.2/go.mod h1:krry+ya/rV9RDcV/Q16kpu6ypI4K2czasz0NC3qS14E= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= 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= @@ -33,6 +63,8 @@ github.com/google/go-cmp v0.5.8 h1:e6P7q2lk1O+qJJb4BtCQXlK8vWEO8V1ZeuEdJNOqZyg= github.com/google/go-cmp v0.5.8/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/uuid v1.1.2 h1:EVhdT+1Kseyi1/pUmXKaFxYsDNy9RQYkMWRH68J/W7Y= github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= +github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/jmespath/go-jmespath v0.4.0 h1:BEgLn5cpjn8UN1mAw4NjwDrS35OdebyEtFe+9YPoQUg= github.com/jmespath/go-jmespath v0.4.0/go.mod h1:T8mJZnbsbmF+m6zOOFylbeCJqk5+pHWvzYPziyZiYoo= github.com/jmespath/go-jmespath/internal/testify v1.5.1 h1:shLQSRRSCCPj3f2gpwzGwWFoC7ycTf1rcQZHOlsJ6N8= @@ -42,19 +74,28 @@ github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZb github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/sirupsen/logrus v1.7.0 h1:ShrD1U9pZB12TX0cVy0DtePoCH97K8EtX+mg7ZARUtM= github.com/sirupsen/logrus v1.7.0/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= +github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ= +github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/testify v1.2.2 h1:bSDNvY7ZPG5RlJ8otE/7V6gMiyenm9RtJ7IUVIAoJ1w= github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= +github.com/stretchr/testify v1.7.0 h1:nwc3DEeHmmLAfoZucVR881uASk0Mfjw8xYJ99tb5CcY= +github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/net v0.0.0-20200202094626-16171245cfb2 h1:CCH4IOTTfewWjGOlSp+zGcjutRKlBEZQ6wTn8ozI/nI= golang.org/x/net v0.0.0-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.17.0 h1:pVaXccu2ozPjCXewfr1S7xza/zcXTity9cCdXQYSjIM= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.2.0 h1:ljd4t30dBnAvMZaQCevtY0xLLD0A+bRZXbgLMLU1F/A= golang.org/x/sys v0.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.19.0 h1:q5f1RH2jigJ1MoAWp2KTp3gm5zAGFUTarQZ5U386+4o= +golang.org/x/sys v0.19.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/text v0.3.0 h1:g61tztE5qeGQ89tm6NTjjM9VPIm088od1l6aSorWRWg= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= -gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM= +golang.org/x/text v0.13.0 h1:ablQoSUd0tRdKxZewP80B+BaqeKJuVhuRxj/dkrun3k= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/yaml.v2 v2.2.8 h1:obN1ZagJSUGI0Ek/LBmuj4SNLPfIny3KsKFopxRdj10= gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= diff --git a/lambda-extensions/config/config.go b/lambda-extensions/config/config.go index 3a8e0d1..6c84a89 100644 --- a/lambda-extensions/config/config.go +++ b/lambda-extensions/config/config.go @@ -38,6 +38,9 @@ type LambdaExtensionConfig struct { EnhanceJsonLogs bool EnableSpanDrops bool KmsCacheSeconds int64 + TelemetryTimeoutMs int + TelemetryMaxBytes int64 + TelemetryMaxItems int } var defaultLogTypes = []string{"platform", "function"} @@ -82,6 +85,22 @@ func (cfg *LambdaExtensionConfig) setDefaults() { enhanceJsonLogs := os.Getenv("SUMO_ENHANCE_JSON_LOGS") enableSpanDrops := os.Getenv("SUMO_SPAN_DROP") kmsCacheSeconds := os.Getenv("KMS_CACHE_SECONDS") + telemetryTimeoutMs := os.Getenv("TELEMETRY_TIMEOUT_MS") + telemetryMaxBytes := os.Getenv("TELEMETRY_MAX_BYTES") + telemetryMaxItems := os.Getenv("TELEMETRY_MAX_ITEMS") + + if telemetryTimeoutMs == "" { + cfg.TelemetryTimeoutMs = 1000 + } + + if telemetryMaxBytes == "" { + cfg.TelemetryMaxBytes = 262144 + } + + if telemetryMaxItems == "" { + cfg.TelemetryMaxItems = 10000 + } + if numRetry == "" { cfg.NumRetry = 3 @@ -141,6 +160,9 @@ func (cfg *LambdaExtensionConfig) validateConfig() error { enhanceJsonLogs := os.Getenv("SUMO_ENHANCE_JSON_LOGS") enableSpanDrops := os.Getenv("SUMO_SPAN_DROP") kmsCacheSeconds := os.Getenv("KMS_CACHE_SECONDS") + telemetryTimeoutMs := os.Getenv("TELEMETRY_TIMEOUT_MS") + telemetryMaxBytes := os.Getenv("TELEMETRY_MAX_BYTES") + telemetryMaxItems := os.Getenv("TELEMETRY_MAX_ITEMS") var allErrors []string var err error @@ -239,6 +261,38 @@ func (cfg *LambdaExtensionConfig) validateConfig() error { } } + if telemetryTimeoutMs != "" { + telemetryTimeoutMs, err := strconv.ParseInt(telemetryTimeoutMs, 10, 32) + if err != nil { + allErrors = append(allErrors, fmt.Sprintf("Unable to parse TELEMETRY_TIMEOUT_MS: %v", err)) + } else { + cfg.TelemetryTimeoutMs = int(telemetryTimeoutMs) + } + cfg.TelemetryTimeoutMs = max(cfg.TelemetryTimeoutMs, 25) + cfg.TelemetryTimeoutMs = min(cfg.TelemetryTimeoutMs, 30000) + } + + if telemetryMaxBytes != "" { + cfg.TelemetryMaxBytes, err = strconv.ParseInt(telemetryMaxBytes, 10, 64) + if err != nil { + allErrors = append(allErrors, fmt.Sprintf("Unable to parse TELEMETRY_MAX_BYTES: %v", err)) + } + cfg.TelemetryMaxBytes = max(cfg.TelemetryMaxBytes, 262144) + cfg.TelemetryMaxBytes = min(cfg.TelemetryMaxBytes, 1048576) + } + + if telemetryMaxItems != "" { + telemetryMaxItems, err := strconv.ParseInt(telemetryMaxItems, 10, 32) + if err != nil { + allErrors = append(allErrors, fmt.Sprintf("Unable to parse TELEMETRY_MAX_ITEMS: %v", err)) + } else { + cfg.TelemetryMaxItems = int(telemetryMaxItems) + } + cfg.TelemetryMaxItems = max(cfg.TelemetryMaxItems, 1000) + cfg.TelemetryMaxItems = min(cfg.TelemetryMaxItems, 10000) + } + + // test valid log format type for _, logType := range cfg.LogTypes { if !utils.StringInSlice(strings.TrimSpace(logType), validLogTypes) { diff --git a/lambda-extensions/config/version.go b/lambda-extensions/config/version.go index e9fe1ff..02a52bd 100644 --- a/lambda-extensions/config/version.go +++ b/lambda-extensions/config/version.go @@ -8,7 +8,7 @@ import ( // ExtensionName same as binary name or file name where main exists var ExtensionName = filepath.Base(os.Args[0]) -var layerVersion = "7" +var layerVersion = "8" // SumoLogicExtensionLayerVersionSuffix denotes the layer version published in AWS var SumoLogicExtensionLayerVersionSuffix string = fmt.Sprintf("%s-prod:%s", ExtensionName, layerVersion) diff --git a/lambda-extensions/lambdaapi/extensionapiclient_test.go b/lambda-extensions/lambdaapi/extensionapiclient_test.go index 69e7340..223b421 100644 --- a/lambda-extensions/lambdaapi/extensionapiclient_test.go +++ b/lambda-extensions/lambdaapi/extensionapiclient_test.go @@ -3,7 +3,7 @@ package lambdaapi import ( "context" "encoding/json" - "io/ioutil" + ioutil "io" "net/http" "net/http/httptest" "testing" diff --git a/lambda-extensions/lambdaapi/httpclient.go b/lambda-extensions/lambdaapi/httpclient.go index 0bc5587..6bcdda2 100644 --- a/lambda-extensions/lambdaapi/httpclient.go +++ b/lambda-extensions/lambdaapi/httpclient.go @@ -4,7 +4,7 @@ import ( "bytes" "context" "fmt" - "io/ioutil" + ioutil "io" "net/http" ) diff --git a/lambda-extensions/lambdaapi/logsapiclient_test.go b/lambda-extensions/lambdaapi/logsapiclient_test.go index 95cd1bb..52569f7 100644 --- a/lambda-extensions/lambdaapi/logsapiclient_test.go +++ b/lambda-extensions/lambdaapi/logsapiclient_test.go @@ -2,7 +2,7 @@ package lambdaapi import ( "context" - "io/ioutil" + ioutil "io" "net/http" "net/http/httptest" "testing" diff --git a/lambda-extensions/lambdaapi/telemetryapiclient.go b/lambda-extensions/lambdaapi/telemetryapiclient.go index f59d74b..1ff8e03 100644 --- a/lambda-extensions/lambdaapi/telemetryapiclient.go +++ b/lambda-extensions/lambdaapi/telemetryapiclient.go @@ -11,20 +11,17 @@ const ( // Base URL for telemetry api extension telemetryURL = "2022-07-01/telemetry" // Subscription Body Constants. Subscribe to platform logs and receive them on ${local_ip}:4243 via HTTP protocol. - telemetry_timeoutMs = 1000 - telemetry_maxBytes = 1048576 - telemetry_maxItems = 10000 telemetry_receiverPort = 4243 ) // SubscribeToLogsAPI is - Subscribe to Logs API to receive the Lambda Logs. -func (client *Client) SubscribeToTelemetryAPI(ctx context.Context, logEvents []string) ([]byte, error) { +func (client *Client) SubscribeToTelemetryAPI(ctx context.Context, logEvents []string, telemetryTimeoutMs int, telemetryMaxBytes int64, telemetryMaxItems int) ([]byte, error) { URL := client.baseURL + telemetryURL reqBody, err := json.Marshal(map[string]interface{}{ "destination": map[string]interface{}{"protocol": "HTTP", "URI": fmt.Sprintf("http://sandbox:%v", receiverPort)}, "types": logEvents, - "buffering": map[string]interface{}{"timeoutMs": telemetry_timeoutMs, "maxBytes": telemetry_maxBytes, "maxItems": telemetry_maxItems}, + "buffering": map[string]interface{}{"timeoutMs": telemetryTimeoutMs, "maxBytes": telemetryMaxBytes, "maxItems": telemetryMaxItems}, "schemaVersion": "2022-07-01", }) if err != nil { diff --git a/lambda-extensions/lambdaapi/telemetryapiclient_test.go b/lambda-extensions/lambdaapi/telemetryapiclient_test.go index 54e254c..fa42064 100644 --- a/lambda-extensions/lambdaapi/telemetryapiclient_test.go +++ b/lambda-extensions/lambdaapi/telemetryapiclient_test.go @@ -2,7 +2,7 @@ package lambdaapi import ( "context" - "io/ioutil" + ioutil "io" "net/http" "net/http/httptest" "testing" @@ -26,10 +26,10 @@ func TestSubscribeToTelemetryAPI(t *testing.T) { client := NewClient(srv.URL[7:], extensionName) // Without Context - response, err := client.SubscribeToTelemetryAPI(nil, []string{"platform", "function", "extension"}) + response, err := client.SubscribeToTelemetryAPI(nil, []string{"platform", "function", "extension"}, 1000, 262144, 10000) commonAsserts(t, client, response, err) // With Context - response, err = client.SubscribeToTelemetryAPI(context.Background(), []string{"platform", "function", "extension"}) + response, err = client.SubscribeToTelemetryAPI(context.Background(), []string{"platform", "function", "extension"}, 1000, 262144, 10000) commonAsserts(t, client, response, err) } diff --git a/lambda-extensions/sumoclient/sumoclient.go b/lambda-extensions/sumoclient/sumoclient.go index efd80ff..cb396d9 100644 --- a/lambda-extensions/sumoclient/sumoclient.go +++ b/lambda-extensions/sumoclient/sumoclient.go @@ -72,7 +72,7 @@ func (s *sumoLogicClient) getColdStart() bool { func (s *sumoLogicClient) makeRequest(ctx context.Context, buf *bytes.Buffer) (*http.Response, error) { endpoint, err := s.getHttpEndpoint() if err != nil { - err = fmt.Errorf("Failed to get SUMO HTTP Endpoint", err) + err = fmt.Errorf("Failed to get SUMO HTTP Endpoint error: %v", err) } request, err := http.NewRequestWithContext(ctx, "POST", endpoint, buf) @@ -106,14 +106,14 @@ func (s *sumoLogicClient) getHttpEndpoint() (string, error) { cfg, err := awsConfig.LoadDefaultConfig(context.TODO()) if err != nil { - fmt.Errorf("Configuration error in aws client,", err) + fmt.Errorf("Configuration error in aws client, error: %v", err) } client := kms.NewFromConfig(cfg) blob, err := b64.StdEncoding.DecodeString(s.config.SumoHTTPEndpoint) if err != nil { - fmt.Errorf("Error converting string to blob,", err) + fmt.Errorf("Error converting string to blob, error: %v", err) } input := &kms.DecryptInput{ @@ -124,7 +124,7 @@ func (s *sumoLogicClient) getHttpEndpoint() (string, error) { result, err := DecodeData(context.TODO(), client, input) if err != nil { - fmt.Errorf("Got error decrypting data: ", err) + fmt.Errorf("Got error decrypting data, error: %v", err) return "", err } @@ -257,7 +257,7 @@ func (s *sumoLogicClient) getLogStream() string { func (s *sumoLogicClient) enhanceLogs(msg responseBody) { s.logger.Debugln("Enhancing logs") - for _, item := range msg { + for idx, item := range msg { // item["FunctionName"] = s.config.FunctionName // item["FunctionVersion"] = s.config.FunctionVersion // creating loggroup/logstream as they are not available in Env. @@ -277,12 +277,18 @@ func (s *sumoLogicClient) enhanceLogs(msg responseBody) { message = strings.TrimSpace(message) json, err := utils.ParseJson(message) if err != nil { - item["message"] = message + if s.config.EnhanceJsonLogs { + item["message"] = message + } else { + s.logger.Debug("EnhanceJsonLogs disabled sending only message.") + msg[idx] = map[string]interface{}{"message": message} + } } else { if s.config.EnhanceJsonLogs { item["message"] = json } else { - item = json + s.logger.Debug("EnhanceJsonLogs disabled sending only json log.") + msg[idx] = json } } } else if ok && logType == "platform.report" { diff --git a/lambda-extensions/sumoclient/sumoclient_test.go b/lambda-extensions/sumoclient/sumoclient_test.go index efc7a68..a694eb8 100644 --- a/lambda-extensions/sumoclient/sumoclient_test.go +++ b/lambda-extensions/sumoclient/sumoclient_test.go @@ -3,7 +3,7 @@ package sumoclient import ( "context" "fmt" - "io/ioutil" + ioutil "io" "net/http" "net/http/httptest" "os" @@ -103,9 +103,20 @@ func TestSumoClient(t *testing.T) { config.MaxDataPayloadSize = 500 t.Log("\nchunking large data\n======================") - var largedata = []byte(`[{"time":"2020-10-27T15:36:14.133Z","type":"platform.start","record":{"requestId":"7313c951-e0bc-4818-879f-72d202e24727","version":"$LATEST"}},{"time":"2020-10-27T15:36:14.282Z","type":"platform.logsSubscription","record":{"name":"sumologic-extension","state":"Subscribed","types":["platform","function"]}},{"time":"2020-10-27T15:36:14.283Z","type":"function","record":"2020-10-27T15:36:14.281Z\tundefined\tINFO\tLoading function\n"},{"time":"2020-10-27T15:36:14.283Z","type":"platform.extension","record":{"name":"sumologic-extension","state":"Ready","events":["INVOKE"]}},{"time":"2020-10-27T15:36:14.301Z","type":"function","record":"2020-10-27T15:36:14.285Z\t7313c951-e0bc-4818-879f-72d202e24727\tINFO\tvalue1 = value1\n"},{"time":"2020-10-27T15:36:14.302Z","type":"function","record":"2020-10-27T15:36:14.301Z\t7313c951-e0bc-4818-879f-72d202e24727\tINFO\tvalue2 = value2\n"},{"time":"2020-10-27T15:36:14.302Z","type":"function","record":"2020-10-27T15:36:14.301Z\t7313c951-e0bc-4818-879f-72d202e24727\tINFO\tvalue3 = value3\n"}]`) + var largedata = []byte(`[{"time":"2020-10-27T15:36:14.133Z","type":"platform.start","record":{"requestId":"7313c951-e0bc-4818-879f-72d202e24727","version":"$LATEST"}},{"time":"2020-10-27T15:36:14.282Z","type":"platform.logsSubscription","record":{"name":"sumologic-extension","state":"Subscribed","types":["platform","function"]}},{"time":"2020-10-27T15:36:14.283Z","type":"function","record":"2020-10-27T15:36:14.281Z\tundefined\tINFO\tLoading function\n"},{"time":"2020-10-27T15:36:14.283Z","type":"platform.extension","record":{"name":"sumologic-extension","state":"Ready","events":["INVOKE"]}},{"time":"2020-10-27T15:36:14.301Z","type":"function","record":"{'log': 'logger error json statement in python: 0'}"},{"time":"2020-10-27T15:36:14.302Z","type":"function","record":"2020-10-27T15:36:14.301Z\t7313c951-e0bc-4818-879f-72d202e24727\tINFO\tvalue2 = value2\n"},{"time":"2020-10-27T15:36:14.302Z","type":"function","record":"2020-10-27T15:36:14.301Z\t7313c951-e0bc-4818-879f-72d202e24727\tINFO\tvalue3 = value3\n"}]`) assertEqual(t, client.SendLogs(ctx, largedata), nil, "SendLogs should not generate error") + config.EnhanceJsonLogs = false + t.Log("\n enhance json logs = false with single line large data\n======================") + var singlinelargedata = []byte(`[{"time":"2020-10-27T15:36:14.133Z","type":"platform.start","record":{"requestId":"7313c951-e0bc-4818-879f-72d202e24727","version":"$LATEST"}},{"time":"2020-10-27T15:36:14.282Z","type":"platform.logsSubscription","record":{"name":"sumologic-extension","state":"Subscribed","types":["platform","function"]}},{"time":"2020-10-27T15:36:14.283Z","type":"function","record":"2020-10-27T15:36:14.281Z\tundefined\tINFO\tLoading function\n"},{"time":"2020-10-27T15:36:14.283Z","type":"platform.extension","record":{"name":"sumologic-extension","state":"Ready","events":["INVOKE"]}},{"time":"2020-10-27T15:36:14.301Z","type":"function","record":"[ERROR]\t2024-05-04T13:58:12.928Z\t917552a8-fabd-4cf0-a2ae-b7863210bc4e\tdd0509ae-6c9e-48d5-afe7-d05e60f6a69b logger error statement in python: 0\n"},{"time":"2020-10-27T15:36:14.302Z","type":"function","record":"2020-10-27T15:36:14.301Z\t7313c951-e0bc-4818-879f-72d202e24727\tINFO\tvalue2 = value2\n"},{"time":"2020-10-27T15:36:14.302Z","type":"function","record":"2020-10-27T15:36:14.301Z\t7313c951-e0bc-4818-879f-72d202e24727\tINFO\tvalue3 = value3\n"}]`) + assertEqual(t, client.SendLogs(ctx, singlinelargedata), nil, "SendLogs should not generate error") + + config.EnhanceJsonLogs = false + t.Log("\n enhance json logs = false with json line large data\n======================") + var jsonlinelargedata = []byte(`[{"time":"2020-10-27T15:36:14.133Z","type":"platform.start","record":{"requestId":"7313c951-e0bc-4818-879f-72d202e24727","version":"$LATEST"}},{"time":"2020-10-27T15:36:14.282Z","type":"platform.logsSubscription","record":{"name":"sumologic-extension","state":"Subscribed","types":["platform","function"]}},{"time":"2020-10-27T15:36:14.283Z","type":"function","record":"2020-10-27T15:36:14.281Z\tundefined\tINFO\tLoading function\n"},{"time":"2020-10-27T15:36:14.283Z","type":"platform.extension","record":{"name":"sumologic-extension","state":"Ready","events":["INVOKE"]}},{"time":"2020-10-27T15:36:14.301Z","type":"function","record":"{'log': 'logger error json statement in python: 0'}"},{"time":"2020-10-27T15:36:14.302Z","type":"function","record":"2020-10-27T15:36:14.301Z\t7313c951-e0bc-4818-879f-72d202e24727\tINFO\tvalue2 = value2\n"},{"time":"2020-10-27T15:36:14.302Z","type":"function","record":"2020-10-27T15:36:14.301Z\t7313c951-e0bc-4818-879f-72d202e24727\tINFO\tvalue3 = value3\n"}]`) + assertEqual(t, client.SendLogs(ctx, jsonlinelargedata), nil, "SendLogs should not generate error") + + t.Log("\ntesting flushall\n======================") var multiplelargedata = [][]byte{ []byte(`[{"time":"2020-10-27T15:36:14.133Z","type":"platform.start","record":{"requestId":"7313c951-e0bc-4818-879f-72d202e24727","version":"$LATEST"}},{"time":"2020-10-27T15:36:14.282Z","type":"platform.logsSubscription","record":{"name":"sumologic-extension","state":"Subscribed","types":["platform","function"]}},{"time":"2020-10-27T15:36:14.283Z","type":"function","record":"2020-10-27T15:36:14.281Z\tundefined\tINFO\tLoading function\n"},{"time":"2020-10-27T15:36:14.283Z","type":"platform.extension","record":{"name":"sumologic-extension","state":"Ready","events":["INVOKE"]}},{"time":"2020-10-27T15:36:14.301Z","type":"function","record":"2020-10-27T15:36:14.285Z\t7313c951-e0bc-4818-879f-72d202e24727\tINFO\tvalue1 = value1\n"},{"time":"2020-10-27T15:36:14.302Z","type":"function","record":"2020-10-27T15:36:14.301Z\t7313c951-e0bc-4818-879f-72d202e24727\tINFO\tvalue2 = value2\n"},{"time":"2020-10-27T15:36:14.302Z","type":"function","record":"2020-10-27T15:36:14.301Z\t7313c951-e0bc-4818-879f-72d202e24727\tINFO\tvalue3 = value3\n"}]`), diff --git a/lambda-extensions/sumologic-extension.go b/lambda-extensions/sumologic-extension.go index 5fca432..e8b354b 100644 --- a/lambda-extensions/sumologic-extension.go +++ b/lambda-extensions/sumologic-extension.go @@ -66,7 +66,7 @@ func runTimeAPIInit() (int64, error) { // Subscribe to Telemetry API logger.Debug("Subscribing Extension to Telemetry API........") - subscribeResponse, err := extensionClient.SubscribeToTelemetryAPI(nil, config.LogTypes) + subscribeResponse, err := extensionClient.SubscribeToTelemetryAPI(nil, config.LogTypes, config.TelemetryTimeoutMs, config.TelemetryMaxBytes, config.TelemetryMaxItems) if err != nil { return 0, err } diff --git a/lambda-extensions/workers/producer.go b/lambda-extensions/workers/producer.go index dd5819b..774b7c4 100644 --- a/lambda-extensions/workers/producer.go +++ b/lambda-extensions/workers/producer.go @@ -2,7 +2,7 @@ package workers import ( "fmt" - "io/ioutil" + ioutil "io" "net/http" "github.com/sirupsen/logrus"