Sparta - go microservices, powered by AWS Lambda

EOL

Times have changed since I started this work. I no longer have the resources to adequately maintain this project. Additionally, there now also exist several other options, including SAM, around which lively communities have formed. With v3, all CloudFormation API changes have been migrated to go-formation and all AWS API SDK calls moved to AWS v2. This likely marks the end of my active development on Sparta.

If this project has been helpful to you and you're interested in becoming a shepherd, please open an issue. Thanks all for your feedback, support, and recommendations over the years.

Keep on serverlessing!

  • Matt December 5th, 2021

Sparta v3

This is v3 of Sparta which is not backward compatible with v1 or v2 versions.

Sparta

Build Status

GoDoc

Go Report Card

Visit gosparta.io for complete documentation.

Version Info

This is the breaking v2 version of Sparta. The previous version is available at at the /v1 branch.

Overview

Sparta takes a set of golang functions and automatically provisions them in AWS Lambda as a logical unit.

AWS Lambda functions are defined using the standard AWS Lambda signatures:

  • func()
  • func() error
  • func(TIn) error
  • func() (TOut, error)
  • func(context.Context) error
  • func(context.Context, TIn) error
  • func(context.Context) (TOut, error)
  • func(context.Context, TIn) (TOut, error)

The TIn and TOut parameters represent encoding/json un/marshallable types.

For instance:

// Standard AWS λ function
func helloWorld(ctx context.Context) (string, error) {
  ...
}

where

  • ctx : The request context that includes both the AWS Context as well as Sparta specific values

Consumers define a set of lambda functions and provide them to Sparta to create a self-documenting, self-deploying AWS Lambda binary:

  lambdaFn, _ := sparta.NewAWSLambda("Hello World",
    helloWorld,
    sparta.IAMRoleDefinition{})

  var lambdaFunctions []*sparta.LambdaAWSInfo
  lambdaFunctions = append(lambdaFunctions, lambdaFn)

  err := sparta.Main("HelloWorldStack",
    "My Hello World stack",
    lambdaFunctions,
    nil,
    nil)

Visit gosparta.io for complete documentation.

Contributing

Sparta contributions are most welcome. Please consult the latest issues for open issues.

Building

Locally building or testing Sparta itself is typically only needed to make package changes. Sparta is more often used as a required import of another application. Building is done via mage.

To get started building and verifying local changes:

  1. go get -u -d github.com/magefile/mage
  2. In the .../mweagle/Sparta directory, run mage -l to list the current targets:
\$ mage -l
Targets:
  build                         the application
  ciBuild                       is the task to build in the context of CI pipeline
  clean                         the working directory
  compareAgainstMasterBranch    is a convenience function to show the comparisons of the current pushed branch against the master branch
  describe                      runs the `TestDescribe` test to generate a describe HTML output file at graph.html
  docsBuild                     builds the public documentation site in the /docs folder
  docsCommit                    builds and commits the current documentation with an autogenerated comment
  docsEdit                      starts a Hugo server and hot reloads the documentation at http://localhost:1313
  docsInstallRequirements       installs the required Hugo version
  ensureAllPreconditions        ensures that the source passes *ALL* static `ensure*` precondition steps
  ensureCIBuildEnvironment      is the command that sets up the CI environment to run the build.
  ensureCleanTree               ensures that the git tree is clean
  ensureFormatted               ensures that the source code is formatted with goimports
  ensureGoFmt                   ensures that the source is `gofmt -s` is empty
  ensureLint                    ensures that the source is `golint`ed
  ensureMarkdownSpelling        ensures that all *.MD files are checked for common spelling mistakes
  ensurePrealloc                ensures that slices that could be preallocated are enforced
  ensureSpelling                ensures that there are no misspellings in the source
  ensureStaticChecks            ensures that the source code passes static code checks
  ensureVet                     ensures that the source has been `go vet`ted
  fetchCloudFormationSchema     we have the latest CloudFormation schema as part of generating constants.
  generateAutomaticCode         is the handler that runs the codegen part of things
  generateBuildInfo             creates the automatic buildinfo.go file so that we can stamp the SHA into the binaries we build...
  generateConstants             runs the set of commands that update the embedded CONSTANTS for both local and AWS Lambda execution
  logCodeMetrics                ensures that the source code is formatted with goimports
  publish                       the latest source
  test                          runs the Sparta tests
  testCover                     runs the test and opens up the resulting report
  unitTest                      only runs the unit tests

Confirm tests are passing on HEAD by first running mage -v test.

As you periodically make local changes, run mage -v test to confirm backward compatibility.

Tests

When possible, please include a test case that verifies the local change and ensures compatibility.

Contributors

Thanks to all Sparta contributors (alphabetical):

Comments
  • Python error with cgo lambda

    Python error with cgo lambda

    Hello @mweagle, I am trying to switch to sparta cgo, but allways I get the same error in cloudwatch (I attach it)

    Error: unknown command "/var/runtime/awslambda/bootstrap.py" for "python3.6"

    I attach the provision -n log too, and you can see my go code in this branch:

    • https://github.com/angelabad/unsplash-telegram-bot/tree/feature/cgo

    cloudwatch_error.txt

    Thanks in advance

  • Support: Example not working

    Support: Example not working

    I have tried everything to make the example work with no luck. Everything gets correctly deployed to AWS, but when I hit "Test" the Lambda function just crashes with no information about why.

    The code is the one in the example and, in case it helps, here are the ClourWatch logs produced:

    {
        "BuildID": "3317be7851ebab6382ffa4d4d4fee94de0b51684",
        "SpartaSHA": "7bac54c",
        "SpartaVersion": "1.9.2",
        "UTC": "2019-05-22T14:33:29Z",
        "go Version": "go1.12.5",
        "level": "info",
        "msg": "Service: SpartaStudyStack",
        "time": "2019-05-22T14:33:29Z"
    }
    2019/05/22 14:33:29 <nil>
    START RequestId: bc5f3a38-376d-422d-bca8-1cc5757d93ba Version: $LATEST
    {
        "BuildID": "3317be7851ebab6382ffa4d4d4fee94de0b51684",
        "SpartaSHA": "7bac54c",
        "SpartaVersion": "1.9.2",
        "UTC": "2019-05-22T14:33:30Z",
        "go Version": "go1.12.5",
        "level": "info",
        "msg": "Service: SpartaStudyStack",
        "time": "2019-05-22T14:33:30Z"
    }
    2019/05/22 14:33:30 <nil>
    END RequestId: bc5f3a38-376d-422d-bca8-1cc5757d93ba
    REPORT RequestId: bc5f3a38-376d-422d-bca8-1cc5757d93ba	Duration: 486.97 ms	Billed Duration: 500 ms Memory Size: 512 MB	Max Memory Used: 33 MB	
    RequestId: bc5f3a38-376d-422d-bca8-1cc5757d93ba Process exited before completing request
    
    {
        "BuildID": "3317be7851ebab6382ffa4d4d4fee94de0b51684",
        "SpartaSHA": "7bac54c",
        "SpartaVersion": "1.9.2",
        "UTC": "2019-05-22T14:33:31Z",
        "go Version": "go1.12.5",
        "level": "info",
        "msg": "Service: SpartaStudyStack",
        "time": "2019-05-22T14:33:31Z"
    }
    2019/05/22 14:33:31 <nil>
    

    I have checked everything (timeouts, memory, changed the signature of the Go function for the lambda, etc) but I always get the same result.

    Could you please let me know what's wrong? Thanks!

  • Cloudformation lambda function name validation error

    Cloudformation lambda function name validation error

    Hi, when I try to provision I get the following error:

    INFO[0052] Waiting for CloudFormation operation to complete ERRO[0072] Stack provisioning error
    ERRO[0072] Error ensuring AWS::Lambda::Function (mainechoTelegramLambda49b221dc927b24011fc3b6f33f28182f47de5242): 1 validation error detected: Value 'main.echoTelegram' at 'functionName' failed to satisfy constraint: Member must satisfy regular expression pattern: (arn:(aws|aws-us-gov):lambda:)?([a-z]{2}(-gov)?-[a-z]+-\d{1}:)?(\d{12}:)?(function:)?([a-zA-Z0-9-_]+)(:($LATEST|[a-zA-Z0-9-_]+))? INFO[0072] Invoking rollback functions RollbackCount=2

    You can see repo code at: https://github.com/angelabad/unsplash-telegram-bot/tree/develop

    Thanks in advance!

  • Error in building Sparta app

    Error in building Sparta app

    I'm trying out a simple Sparta application based on the "Hello World" application documented and I got this error after a glide init; glide install; glide up; and then run a go run main.go:

    # vanguard/vendor/github.com/mweagle/Sparta
    vendor/github.com/mweagle/Sparta/lambda_permissions.go:269: cannot use "vanguard/vendor/github.com/crewjam/go-cloudformation".GetAtt(configuratorResName, "Arn") (type *"vanguard/vendor/github.com/crewjam/go-cloudformation".StringExpr) as type *"vanguard/vendor/github.com/mweagle/go-cloudformation".StringExpr in assignment
    vendor/github.com/mweagle/Sparta/lambda_permissions.go:270: cannot use sourceArnExpression (type *"vanguard/vendor/github.com/crewjam/go-cloudformation".StringExpr) as type *"vanguard/vendor/github.com/mweagle/go-cloudformation".StringExpr in assignment
    vendor/github.com/mweagle/Sparta/lambda_permissions.go:271: cannot use "vanguard/vendor/github.com/crewjam/go-cloudformation".GetAtt(lambdaLogicalCFResourceName, "Arn") (type *"vanguard/vendor/github.com/crewjam/go-cloudformation".StringExpr) as type *"vanguard/vendor/github.com/mweagle/go-cloudformation".StringExpr in assignment
    vendor/github.com/mweagle/Sparta/lambda_permissions.go:364: cannot use "vanguard/vendor/github.com/crewjam/go-cloudformation".GetAtt(configuratorResName, "Arn") (type *"vanguard/vendor/github.com/crewjam/go-cloudformation".StringExpr) as type *"vanguard/vendor/github.com/mweagle/go-cloudformation".StringExpr in assignment
    vendor/github.com/mweagle/Sparta/lambda_permissions.go:365: cannot use "vanguard/vendor/github.com/crewjam/go-cloudformation".GetAtt(lambdaLogicalCFResourceName, "Arn") (type *"vanguard/vendor/github.com/crewjam/go-cloudformation".StringExpr) as type *"vanguard/vendor/github.com/mweagle/go-cloudformation".StringExpr in assignment
    vendor/github.com/mweagle/Sparta/lambda_permissions.go:366: cannot use sourceArnExpression (type *"vanguard/vendor/github.com/crewjam/go-cloudformation".StringExpr) as type *"vanguard/vendor/github.com/mweagle/go-cloudformation".StringExpr in assignment
    vendor/github.com/mweagle/Sparta/lambda_permissions.go:551: cannot use "vanguard/vendor/github.com/crewjam/go-cloudformation".String(rule.Name) (type *"vanguard/vendor/github.com/crewjam/go-cloudformation".StringExpr) as type *"vanguard/vendor/github.com/mweagle/go-cloudformation".StringExpr in field value
    vendor/github.com/mweagle/Sparta/lambda_permissions.go:552: cannot use "vanguard/vendor/github.com/crewjam/go-cloudformation".Bool(!rule.ScanDisabled) (type *"vanguard/vendor/github.com/crewjam/go-cloudformation".BoolExpr) as type *"vanguard/vendor/github.com/mweagle/go-cloudformation".BoolExpr in field value
    vendor/github.com/mweagle/Sparta/lambda_permissions.go:553: cannot use "vanguard/vendor/github.com/crewjam/go-cloudformation".Bool(!rule.Disabled) (type *"vanguard/vendor/github.com/crewjam/go-cloudformation".BoolExpr) as type *"vanguard/vendor/github.com/mweagle/go-cloudformation".BoolExpr in field value
    vendor/github.com/mweagle/Sparta/lambda_permissions.go:555: cannot use make([]*"vanguard/vendor/github.com/crewjam/go-cloudformation".StringExpr, 0) (type []*"vanguard/vendor/github.com/crewjam/go-cloudformation".StringExpr) as type []*"vanguard/vendor/github.com/mweagle/go-cloudformation".StringExpr in field value
    vendor/github.com/mweagle/Sparta/lambda_permissions.go:555: too many errors
    

    As I'm new to using sparta, this is most definitely an operator error - I'm just looking for assistance to resolve the issue.

    Thanks!

  • Are you considering a workflow with stages?

    Are you considering a workflow with stages?

    I am still struggling a bit with how best to set up our development workflow with Lambda.

    It seems that some tools provide some basic functionality to test the Lambda code with a command that executes it locally with event data being passed in from a local JSON file.

    I haven't used it or really even researched it but JAWS seems to have support for stages and their documentation mentions:

    The Framework uses Stages to partition sets of Lambdas, Resources and API Gateway stages. For clarity, every Stage gets its own:

    Lambdas replication Resources replication (DynamoDb, IAM, etc.) API Gateway Stage on the Project’s REST API

    The Framework helps you manage these stages, and even point to the Lambdas or Resources in one Stage within another. Further, new Lambda Versioning and Lambda Alias features allow easy promotion of each of your Lambdas to production, when they are ready.

    Perhaps all of that is a little more complex than you have in mind for the Sparta project but it would be curious to hear your thoughts.

    The personal use case that I have in mind is sending SNS notifications from some monolithic REST API code running on an EC2 instance inside a VPC. The SNS notifications have a lambda function subscribing to them to send transactional e-mails to users via SES. I am not really sure if I want to have separate Lambda functions and topics for each 'stage' but I need to work out how to make sure that the topics, lambdas and subscriptions are all properly provisioned and connected together. Sparta is helping with that by registering the lambda function and adding a permission, but it assumes that the SNS topic already exists. I suppose my development and testing Lambda's need to behave differently so that we don't accidentally try to e-mail a real person.

  • Custom resources make Cloudformation time out

    Custom resources make Cloudformation time out

    Hi,

    I'm trying to deploy an API Gateway attached to a S3 website with CORS; then I have other functions making use of S3 bucket as event source for Lambda functions. The Cloudformation stack that is created with

    myspartaapp provision --s3Bucket myspartabucket

    fails to stabilize with error

    AWS::CloudFormation::CustomResource   S3SiteBuilder868e68ba5c700a3b62c6e516eb71c2cf8e814871	Resource creation cancelled
    AWS::CloudFormation::CustomResource   ConfigS363904f6fbd39013d6c82dd26d828dcbc950f26db	Resource creation cancelled
    AWS::CloudFormation::Stack	myspartaapp   Stack creation time exceeded the specified timeout. Delete requested by user.
    

    Sparta version GoVersion=go1.7.5 LinkFlags= Option=version SpartaVersion=0.10.0

    My code is like

    func businessLogic(api *sparta.API) []*sparta.LambdaAWSInfo {
    	var funcs []*sparta.LambdaAWSInfo
            //Function to get event from S3 bucket, no API Gateway mapping for it
            // the S3 bucket is only declared as string, no object definition for it and it does not exist
    
            //Functions to process events from API Gateway
    
            return funcs
    }
    
    func main() {
    	//Create API Gateway
    	apiStage := sparta.NewStage("v1")
    	apiGateway := sparta.NewAPIGateway("myspartaapp", apiStage)
    	apiGateway.CORSEnabled = true
    
    	//Create S3 static website
    	s3Site, err := sparta.NewS3Site("./static")
    	if err != nil {
                    log.Errorf("%v", err)
    		os.Exit(1)
    	}
    
    	// Deploy it
    	sparta.Main("myspartaapp",
    		"My Sparta application",
    		businessLogic(apiGateway),
    		apiGateway,
    		s3Site)
    }
    

    Sparta output log

    time="2017-02-26T18:54:24+01:00" level=error msg="Stack provisioning error"
    time="2017-02-26T18:54:24+01:00" level=error msg="\tError ensuring AWS::CloudFormation::Stack (myspartaapp): The following resource(s) failed to delete: [ConfigS363904f6fbd39013d6c82dd26d828dcbc950f26db, S3SiteBuilder868e68ba5c700a3b62c6e516eb71c2cf8e814871]. "
    time="2017-02-26T18:54:24+01:00" level=error msg="\tError ensuring AWS::CloudFormation::CustomResource (S3SiteBuilder868e68ba5c700a3b62c6e516eb71c2cf8e814871): Custom Resource failed to stabilize in expected time"
    time="2017-02-26T18:54:24+01:00" level=error msg="\tError ensuring AWS::CloudFormation::CustomResource (ConfigS363904f6fbd39013d6c82dd26d828dcbc950f26db): Custom Resource failed to stabilize in expected time"
    time="2017-02-26T18:54:24+01:00" level=error msg="\tError ensuring AWS::CloudFormation::CustomResource (ConfigS363904f6fbd39013d6c82dd26d828dcbc950f26db): Resource creation cancelled"
    time="2017-02-26T18:54:24+01:00" level=error msg="\tError ensuring AWS::CloudFormation::CustomResource (S3SiteBuilder868e68ba5c700a3b62c6e516eb71c2cf8e814871): Resource creation cancelled"
    

    Any idea? Thank you

  • InvalidChangeSetStatus: Cannot delete ChangeSet in status CREATE_IN_PROGRESS

    InvalidChangeSetStatus: Cannot delete ChangeSet in status CREATE_IN_PROGRESS

    I often come up with the mentioned error while provisioning my service. The process then shuts down. I have to relaunch the provisioning process several times then to get it working.

    The command I use is: go run main.go provision --s3Bucket $S3_BUCKET --tags staging

    Output log:

    INFO[0009] Uploading to S3                               Path="/home/miltador/Projects/Go/src/path_to_project/.sparta/project_staging-cftemplate.json"
    INFO[0011] Issued CreateChangeSet request                StackName=project-staging
    INFO[0025] No changes detected for service               StackName=project-staging
    INFO[0025] Invoking rollback functions                   RollbackCount=2
    INFO[0025] Deleting S3 object                            URL="https://some-bucket-eu-west-1.amazonaws.com/project-staging/project_staging-cftemplate-da84d441e598ed0b2e754c4717f1615138565a3c.json"
    INFO[0025] Deleting S3 object                            URL="https://some-bucket-eu-west-1.amazonaws.com/project-staging%2Fproject_staging-code-98a0481e4fd893a007481e92e45f2add325e1ce1.zip"
    ERRO[0025] InvalidChangeSetStatus: Cannot delete ChangeSet in status CREATE_IN_PROGRESS
            status code: 400, request id: 5d86eba7-ef3f-11e6-8037-0dfba0579a7d 
    Error: InvalidChangeSetStatus: Cannot delete ChangeSet in status CREATE_IN_PROGRESS
            status code: 400, request id: 5d86eba7-ef3f-11e6-8037-0dfba0579a7d
    
  • Access Denied in first example

    Access Denied in first example

    Dear Sparta,

    I downloaded the framework today and a following de first example using my personal credentials. Everything is fine, but I can't access my bucket? This is impossible, because I create this bucket and I have a S3FullAccess policy. Did you know what happens? I past above my debug logs:

    /Users/marcosbritto/go/code/src/bitbucket.org/marcoslbritto/SpartTest/SpartTest provision --s3Bucket gostei --level debug #gosetup INFO[0000] ════════════════════════════════════════════════ INFO[0000] ╔═╗╔═╗╔═╗╦═╗╔╦╗╔═╗ Version : 1.15.0 INFO[0000] ╚═╗╠═╝╠═╣╠╦╝ ║ ╠═╣ SHA : 0bb47c1 INFO[0000] ╚═╝╩ ╩ ╩╩╚═ ╩ ╩ ╩ Go : go1.14.3 INFO[0000] ════════════════════════════════════════════════ INFO[0000] Service: MyHelloWorldStack-marcos-lopes@intuitivecare-com LinkFlags= Option=provision UTC="2020-05-19T22:41:11Z" INFO[0000] ════════════════════════════════════════════════ DEBU[0000] Provision validation results optionsProvision="{gostei false}" validateErr="" DEBU[0000] Lambda collision map CollisionMap="map[Hello World:1]" DEBU[0000] AWS SDK Info Name=aws-sdk-go Version=1.31.1 INFO[0000] Provisioning service BuildID=440564428617810f6a342cf7f724d7cc458ccd39 CodePipelineTrigger= InPlaceUpdates=false NOOP=false Tags= INFO[0000] Verifying IAM Lambda execution roles
    INFO[0000] IAM roles verified Count=1 INFO[0000] DEBUG: Request s3/GetBucketVersioning Details: ---[ REQUEST POST-SIGN ]----------------------------- GET /?versioning= HTTP/1.1 Host: gostei.s3.amazonaws.com User-Agent: aws-sdk-go/1.31.1 (go1.14.3; darwin; amd64) Authorization: AWS4-HMAC-SHA256 Credential=/20200519/us-east-1/s3/aws4_request, SignedHeaders=host;x-amz-content-sha256;x-amz-date, Signature= X-Amz-Content-Sha256: e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 X-Amz-Date: 20200519T224111Z Accept-Encoding: gzip


    DEBU[0000] AWS Request Method=GET Operation=GetBucketVersioning Path="/{Bucket}?versioning" Payload="{\n Bucket: "gostei"\n}" Service=s3 INFO[0001] DEBUG: Response s3/GetBucketVersioning Details: ---[ RESPONSE ]-------------------------------------- HTTP/1.1 403 Forbidden Transfer-Encoding: chunked Content-Type: application/xml Date: Tue, 19 May 2020 22:41:11 GMT Server: AmazonS3 X-Amz-Id-2: 1C3flssPGbHDUNpT+hucGGlaomKQMOf0UtP7kpyG1rCLCy/Ls+/J7W4fDyoHUNORk/6fRrWRAEY= X-Amz-Request-Id: 5F221DB780AF23E8


    INFO[0001] DEBUG: Validate Response s3/GetBucketVersioning failed, attempt 0/3, error AccessDenied: Access Denied status code: 403, request id: 5F221DB780AF23E8, host id: 1C3flssPGbHDUNpT+hucGGlaomKQMOf0UtP7kpyG1rCLCy/Ls+/J7W4fDyoHUNORk/6fRrWRAEY= INFO[0001] Invoking rollback functions
    ERRO[0001] Failed to provision service: AccessDenied: Access Denied status code: 403, request id: 5F221DB780AF23E8, host id: 1C3flssPGbHDUNpT+hucGGlaomKQMOf0UtP7kpyG1rCLCy/Ls+/J7W4fDyoHUNORk/6fRrWRAEY=

  • "Unknown Validator matches" error trying to run "provision"

    Not sure if the format of the s3 bucket name is the cause... but getting this error with a bucket name like "3dsim-infrastructure-configuration".

  • Unknown Validator matches(\w+)

    Unknown Validator matches(\w+)

    When you run the go run main.go provision -s $S3_BUCKET -l debug command, the following error occurs:

    INFO[0000] Welcome to MyHelloWorldStack Go=go1.6.2 Option=provision SpartaVersion=0.7.1 UTC=2016-08-03T12:03:46Z
    DEBU[0000] Provision Validation optionsProvision={S3Bucket:longa} validateErr=S3Bucket: Unknown Validator matches(\w+); validationResults=false
    Error: S3Bucket: Unknown Validator matches(\w+);
    

    Any idea?

  • Doesn't work with Mac OSX

    Doesn't work with Mac OSX

    Documentation does not state which platforms are supported for development, so one would guess any platform supported by golang is good but...

    Following the getting started from Mac OS, when doing the go run main.go ...

    INFO[0000] ../../github.com/mweagle/Sparta/sparta_main_awsbinary.go:17:2: cannot find package "github.com/zcalusic/sysinfo" in any of:
    
    INFO[0000] 	/Users/marc/.gvm/gos/go1.9/src/github.com/zcalusic/sysinfo (from $GOROOT)
    INFO[0000] 	/Users/marc/go/src/github.com/zcalusic/sysinfo (from $GOPATH)
    INFO[0000] Invoking rollback functions
    

    As far as I understand zcalusic/sysinfo is Linux only.

    go version go1.9 darwin/amd64 GOARCH="amd64" GOBIN="/Users/marc/go/bin" GOHOSTARCH="amd64" GOHOSTOS="darwin" GOOS="darwin" CC="clang" GOGCCFLAGS="-fPIC -m64 -pthread -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fdebug-prefix-map=/var/folders/lc/80799yss6klb3_ft_szyfgyr0000gn/T/go-build360770781=/tmp/go-build -gno-record-gcc-switches -fno-common" CXX="clang++"

  • Bump json5 from 2.2.0 to 2.2.3 in /docs/presentations/reveal.js

    Bump json5 from 2.2.0 to 2.2.3 in /docs/presentations/reveal.js

    Bumps json5 from 2.2.0 to 2.2.3.

    Release notes

    Sourced from json5's releases.

    v2.2.3

    v2.2.2

    • Fix: Properties with the name __proto__ are added to objects and arrays. (#199) This also fixes a prototype pollution vulnerability reported by Jonathan Gregson! (#295).

    v2.2.1

    • Fix: Removed dependence on minimist to patch CVE-2021-44906. (#266)
    Changelog

    Sourced from json5's changelog.

    v2.2.3 [code, diff]

    v2.2.2 [code, diff]

    • Fix: Properties with the name __proto__ are added to objects and arrays. (#199) This also fixes a prototype pollution vulnerability reported by Jonathan Gregson! (#295).

    v2.2.1 [code, diff]

    • Fix: Removed dependence on minimist to patch CVE-2021-44906. (#266)
    Commits
    • c3a7524 2.2.3
    • 94fd06d docs: update CHANGELOG for v2.2.3
    • 3b8cebf docs(security): use GitHub security advisories
    • f0fd9e1 docs: publish a security policy
    • 6a91a05 docs(template): bug -> bug report
    • 14f8cb1 2.2.2
    • 10cc7ca docs: update CHANGELOG for v2.2.2
    • 7774c10 fix: add proto to objects and arrays
    • edde30a Readme: slight tweak to intro
    • 97286f8 Improve example in readme
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

  • Bump json5 from 2.2.0 to 2.2.3 in /docs_source/static/presentations/reveal.js

    Bump json5 from 2.2.0 to 2.2.3 in /docs_source/static/presentations/reveal.js

    Bumps json5 from 2.2.0 to 2.2.3.

    Release notes

    Sourced from json5's releases.

    v2.2.3

    v2.2.2

    • Fix: Properties with the name __proto__ are added to objects and arrays. (#199) This also fixes a prototype pollution vulnerability reported by Jonathan Gregson! (#295).

    v2.2.1

    • Fix: Removed dependence on minimist to patch CVE-2021-44906. (#266)
    Changelog

    Sourced from json5's changelog.

    v2.2.3 [code, diff]

    v2.2.2 [code, diff]

    • Fix: Properties with the name __proto__ are added to objects and arrays. (#199) This also fixes a prototype pollution vulnerability reported by Jonathan Gregson! (#295).

    v2.2.1 [code, diff]

    • Fix: Removed dependence on minimist to patch CVE-2021-44906. (#266)
    Commits
    • c3a7524 2.2.3
    • 94fd06d docs: update CHANGELOG for v2.2.3
    • 3b8cebf docs(security): use GitHub security advisories
    • f0fd9e1 docs: publish a security policy
    • 6a91a05 docs(template): bug -> bug report
    • 14f8cb1 2.2.2
    • 10cc7ca docs: update CHANGELOG for v2.2.2
    • 7774c10 fix: add proto to objects and arrays
    • edde30a Readme: slight tweak to intro
    • 97286f8 Improve example in readme
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

  • Bump decode-uri-component from 0.2.0 to 0.2.2 in /docs_source/static/presentations/reveal.js

    Bump decode-uri-component from 0.2.0 to 0.2.2 in /docs_source/static/presentations/reveal.js

    Bumps decode-uri-component from 0.2.0 to 0.2.2.

    Release notes

    Sourced from decode-uri-component's releases.

    v0.2.2

    • Prevent overwriting previously decoded tokens 980e0bf

    https://github.com/SamVerschueren/decode-uri-component/compare/v0.2.1...v0.2.2

    v0.2.1

    • Switch to GitHub workflows 76abc93
    • Fix issue where decode throws - fixes #6 746ca5d
    • Update license (#1) 486d7e2
    • Tidelift tasks a650457
    • Meta tweaks 66e1c28

    https://github.com/SamVerschueren/decode-uri-component/compare/v0.2.0...v0.2.1

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

  • Bump decode-uri-component from 0.2.0 to 0.2.2 in /docs/presentations/reveal.js

    Bump decode-uri-component from 0.2.0 to 0.2.2 in /docs/presentations/reveal.js

    Bumps decode-uri-component from 0.2.0 to 0.2.2.

    Release notes

    Sourced from decode-uri-component's releases.

    v0.2.2

    • Prevent overwriting previously decoded tokens 980e0bf

    https://github.com/SamVerschueren/decode-uri-component/compare/v0.2.1...v0.2.2

    v0.2.1

    • Switch to GitHub workflows 76abc93
    • Fix issue where decode throws - fixes #6 746ca5d
    • Update license (#1) 486d7e2
    • Tidelift tasks a650457
    • Meta tweaks 66e1c28

    https://github.com/SamVerschueren/decode-uri-component/compare/v0.2.0...v0.2.1

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

  • Bump qs from 6.10.1 to 6.11.0 in /docs/presentations/reveal.js

    Bump qs from 6.10.1 to 6.11.0 in /docs/presentations/reveal.js

    Bumps qs from 6.10.1 to 6.11.0.

    Changelog

    Sourced from qs's changelog.

    6.11.0

    • [New] [Fix] stringify: revert 0e903c0; add commaRoundTrip option (#442)
    • [readme] fix version badge

    6.10.5

    • [Fix] stringify: with arrayFormat: comma, properly include an explicit [] on a single-item array (#434)

    6.10.4

    • [Fix] stringify: with arrayFormat: comma, include an explicit [] on a single-item array (#441)
    • [meta] use npmignore to autogenerate an npmignore file
    • [Dev Deps] update eslint, @ljharb/eslint-config, aud, has-symbol, object-inspect, tape

    6.10.3

    • [Fix] parse: ignore __proto__ keys (#428)
    • [Robustness] stringify: avoid relying on a global undefined (#427)
    • [actions] reuse common workflows
    • [Dev Deps] update eslint, @ljharb/eslint-config, object-inspect, tape

    6.10.2

    • [Fix] stringify: actually fix cyclic references (#426)
    • [Fix] stringify: avoid encoding arrayformat comma when encodeValuesOnly = true (#424)
    • [readme] remove travis badge; add github actions/codecov badges; update URLs
    • [Docs] add note and links for coercing primitive values (#408)
    • [actions] update codecov uploader
    • [actions] update workflows
    • [Tests] clean up stringify tests slightly
    • [Dev Deps] update eslint, @ljharb/eslint-config, aud, object-inspect, safe-publish-latest, tape
    Commits
    • 56763c1 v6.11.0
    • ddd3e29 [readme] fix version badge
    • c313472 [New] [Fix] stringify: revert 0e903c0; add commaRoundTrip option
    • 95bc018 v6.10.5
    • 0e903c0 [Fix] stringify: with arrayFormat: comma, properly include an explicit `[...
    • ba9703c v6.10.4
    • 4e44019 [Fix] stringify: with arrayFormat: comma, include an explicit [] on a s...
    • 113b990 [Dev Deps] update object-inspect
    • c77f38f [Dev Deps] update eslint, @ljharb/eslint-config, aud, has-symbol, tape
    • 2cf45b2 [meta] use npmignore to autogenerate an npmignore file
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

  • Bump qs from 6.10.1 to 6.11.0 in /docs_source/static/presentations/reveal.js

    Bump qs from 6.10.1 to 6.11.0 in /docs_source/static/presentations/reveal.js

    Bumps qs from 6.10.1 to 6.11.0.

    Changelog

    Sourced from qs's changelog.

    6.11.0

    • [New] [Fix] stringify: revert 0e903c0; add commaRoundTrip option (#442)
    • [readme] fix version badge

    6.10.5

    • [Fix] stringify: with arrayFormat: comma, properly include an explicit [] on a single-item array (#434)

    6.10.4

    • [Fix] stringify: with arrayFormat: comma, include an explicit [] on a single-item array (#441)
    • [meta] use npmignore to autogenerate an npmignore file
    • [Dev Deps] update eslint, @ljharb/eslint-config, aud, has-symbol, object-inspect, tape

    6.10.3

    • [Fix] parse: ignore __proto__ keys (#428)
    • [Robustness] stringify: avoid relying on a global undefined (#427)
    • [actions] reuse common workflows
    • [Dev Deps] update eslint, @ljharb/eslint-config, object-inspect, tape

    6.10.2

    • [Fix] stringify: actually fix cyclic references (#426)
    • [Fix] stringify: avoid encoding arrayformat comma when encodeValuesOnly = true (#424)
    • [readme] remove travis badge; add github actions/codecov badges; update URLs
    • [Docs] add note and links for coercing primitive values (#408)
    • [actions] update codecov uploader
    • [actions] update workflows
    • [Tests] clean up stringify tests slightly
    • [Dev Deps] update eslint, @ljharb/eslint-config, aud, object-inspect, safe-publish-latest, tape
    Commits
    • 56763c1 v6.11.0
    • ddd3e29 [readme] fix version badge
    • c313472 [New] [Fix] stringify: revert 0e903c0; add commaRoundTrip option
    • 95bc018 v6.10.5
    • 0e903c0 [Fix] stringify: with arrayFormat: comma, properly include an explicit `[...
    • ba9703c v6.10.4
    • 4e44019 [Fix] stringify: with arrayFormat: comma, include an explicit [] on a s...
    • 113b990 [Dev Deps] update object-inspect
    • c77f38f [Dev Deps] update eslint, @ljharb/eslint-config, aud, has-symbol, tape
    • 2cf45b2 [meta] use npmignore to autogenerate an npmignore file
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

This repository shows how can we use `AWS Lambda` to build serverless applications in golang.

Serverless Api in Go with AWS Lambda Here we are going to use AWS Lambda to build serverless applications in golang. Prerequisites You’ll need an AWS

Nov 3, 2021
Prueba de concepto: Boletia, una aplicación para venta de boletos, basada en microservicios event-driven. Desarrollada sobre AWS Serverless: Api Gateway, Lambda, DynamoDB, DynamoDB Streams
Prueba de concepto: Boletia, una aplicación para venta de boletos, basada en microservicios event-driven. Desarrollada sobre AWS Serverless: Api Gateway, Lambda, DynamoDB, DynamoDB Streams

Prueba de concepto: Boletia, una aplicación para venta de boletos, basada en microservicios event-driven. Desarrollada sobre AWS Serverless: Api Gatew

May 7, 2022
Golang AWS SAM Lambda example

Golang AWS SAM Lambda example This example project shows how to use AWS SAM with

Nov 18, 2022
Go-xrayprofile - Selective profiling of AWS Lambda functions

go-xrayprofile AWS X-Ray is handy for understanding the overall performance of y

May 18, 2022
Mrrobot - A simple greetings bot for Slack that uses events api and hosted on AWS Lambda

Mr. Robot a greeter bot for your slack community build_docker

Aug 21, 2022
Simple no frills AWS S3 Golang Library using REST with V4 Signing (without AWS Go SDK)

simples3 : Simple no frills AWS S3 Library using REST with V4 Signing Overview SimpleS3 is a golang library for uploading and deleting objects on S3 b

Nov 4, 2022
Integrate AWS EKS Anywhere cluster with AWS Services
 Integrate AWS EKS Anywhere cluster with AWS Services

This article provides step-by-step instruction on integrating AWS EKS Anywhere with AWS Services so the applications running on customer data center can securely connect with these services.

Mar 6, 2022
Apis para la administracion de notifiaciones, utilizando servicios como AWS SNS y AWS SQS

notificacion_api Servicio para envío de notificaciónes por difusión en AWS SNS Especificaciones Técnicas Tecnologías Implementadas y Versiones Golang

Jan 7, 2022
AWS credential_process utility to assume AWS IAM Roles with Yubikey Touch and Authenticator App TOPT MFA to provide temporary session credentials; With encrypted caching and support for automatic credential refresh.
AWS credential_process utility to assume AWS IAM Roles with Yubikey Touch and Authenticator App TOPT MFA to provide temporary session credentials; With encrypted caching and support for automatic credential refresh.

AWS credential_process utility to assume AWS IAM Roles with Yubikey Touch and Authenticator App TOPT MFA to provide temporary session credentials; With encrypted caching and support for automatic credential refresh.

Dec 20, 2022
A package for access aws service using AWS SDK for Golang

goaws ?? A package for access aws service using AWS SDK for Golang Advantage with goaws package Example for get user list IAM with AWS SDK for Golang

Nov 25, 2021
Simple CRUD API written in Go, built using AWS SAM tool and using the AWS' infrastructure.
Simple CRUD API written in Go, built using AWS SAM tool and using the AWS' infrastructure.

tutor-pet API Simple CRUD API written in Go, built using AWS SAM tool and using the AWS' infrastructure. Macro architecture: Code architecture: Pre-Re

Aug 17, 2022
Aws-parameter-bulk - Export AWS SSM Parameter Store values in bulk to .env files

aws-parameter-bulk Utility to read parameters from AWS Systems Manager (SSM) Par

Oct 18, 2022
Feb 7, 2022
Aws-cognito-demo-go - Source code for AWS Cognito in Go

AWS Cognito Demo in Go Source code for YouTube series, AWS Cognito in Go - https

Dec 10, 2022
Una prueba técnica: Servicio Golang REST API local, sobre Docker, gRPC, AWS Serverless y sobre Kubernetes en AWS EC2

Una prueba técnica: Servicio Golang REST API local, sobre Docker, gRPC, AWS Serverless y sobre Kubernetes en AWS EC2

May 7, 2022
Aws-cdk-go-examples - Example projects using the AWS CDK by Golang

aws-cdk-go-examples Example projects using the AWS CDK by Golang Useful commands

Nov 24, 2022
Lambda Extension for iamlive

iamlive Lambda Extension The iamlive Lambda Extension helps generate a least-privilege IAM policy by monitoring the AWS calls made within the Lambda e

Dec 17, 2022
Lambda service function

openfaas-lambda These are sets of example that i've used when migrating aws lambda to openfaas platform. A part of documenting on how it works, I'm op

Oct 26, 2022
A Lambda function built with SAM (Serverless Application Module)

AWS SAM Lambda Function © Israel Pereira Tavares da Silva The AWS Serverless Application Model (SAM) is an open-source framework for building serverle

Dec 19, 2021