All Versions
Latest Version
Avg Release Cycle
50 days
Latest Release
883 days ago

Changelog History
Page 4

  • v0.20.2 Changes

    • ๐Ÿ’ฅ :warning: BREAKING
    • :checkered_flag: CHANGES

      • Added support for Step functions.
      • Step functions are expressed via a combination of: states, NewStateMachine, and adding a StateMachineDecorator as a service hook.
      • See the SpartaStep sample for a service that provisions a simple roll die state machine.
      • Usability improvements & enhancements for CLI log output. Text-formatted output now includes cleaner header as in:
      INFO[0000] โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•
      INFO[0000]    _______  ___   ___  _________
      INFO[0000]   / __/ _ \/ _ | / _ \/_  __/ _ |     Version : 0.20.2
      INFO[0000]  _\ \/ ___/ __ |/ , _/ / / / __ |     SHA     : 740028b
      INFO[0000] /___/_/  /_/ |_/_/|_| /_/ /_/ |_|     Go      : go1.9.1
      INFO[0000] โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•
      INFO[0000] Service: SpartaStep-mweagle                   LinkFlags= Option=provision UTC="2017-11-01T01:14:31Z"
      INFO[0000] โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•
      • Added megacheck to compile pipeline. Fixed issues.
      • Corrected inline Go examples to use proper function references & signatures.
    • ๐Ÿ›  :bug: FIXED

  • v0.20.1 Changes

    • ๐Ÿ’ฅ :warning: BREAKING
    • :checkered_flag: CHANGES
      • Add sparta.LambdaName to return the reflection-discovered name of an http.HandleFunc instance.
    • ๐Ÿ›  :bug: FIXED
      • Fixed issue with --describe not rendering CloudFormation template properly
      • Better handle failures when posting body - thanks @nylar
  • v0.20.0 Changes

    ๐Ÿ—„ :star: Deprecation Notice

    ๐Ÿš€ The sparta.LambdaFunc signature is officially deprecated in favor of http.HandlerFunc and will be removed in an upcoming release. See below for more information

    • ๐Ÿ’ฅ :warning: BREAKING
      • Changed NewLambdaHTTPHandler to NewServeMuxLambda
      • Remove obsolete InvokeID from LambdaContext
      • Changed codePipelineTrigger CLI arg name to codePipelinePackage
    • :checkered_flag: CHANGES

      • Eliminated NodeJS cold start cp & chmod penalty! :fire:
      • Prior to this release, the NodeJS proxying code would copy the embedded binary to /tmp and add the executable flag prior to actually launching the binary. This had a noticeable performance penalty for startup.
      • This release embeds the application or library in a ./bin directory with the file permissions set so that there is no additional filesystem overhead on cold-start. h/t to StackOverflow for the tips.
      • Migrated all IPC calls to protocolBuffers.
      • Message definitions are in the proxy directory.
      • The client-side log level (eg: --level debug) is carried into the AWS Lambda Code package.
      • Provisioning a service with --level debug will log everything at logger.Debug level and higher including all AWS API calls made both at provision and Lambda execution time.
      • Help resolve "Works on My Stack" syndrome.
      • HTTP handler panic events are now recovered and the traceback logged for both NodeJS and cgo deployments
      • Introduced sparta.HandleAWSLambda
      • sparta.HandleAWSLambda accepts standard http.RequestFunc signatures as in:
        func helloWorld(w http.ResponseWriter, r *http.Request) {
        lambdaFn := sparta.HandleAWSLambda("Hello HTTP World",
      • This allows you to chain middleware for a lambda function as if it were a standard HTTP handler. Say, for instance: X-Ray.
      • The legacy sparta.LambdaFunction is still supported, but marked for deprecation. You will see a log warning as in:
        WARN[0045] DEPRECATED: sparta.LambdaFunc() signature provided. Please migrate to http.HandlerFunc()
      • LambdaContext and *logrus.Logger are now available in the requext.Context() via:
        • sparta.ContextKeyLogger => *logrus.Logger
        • sparta.ContextKeyLambdaContext => *sparta.LambdaContext
      • Example:
        • loggerVal, loggerValOK := r.Context().Value(sparta.ContextKeyLogger).(*logrus.Logger)
      • Added support for CodePipeline
      • See the SpartaCodePipeline project for a complete example and the related post.
      • Upgraded NodeJS to nodejs6.10 runtime
      • Parity between NodeJS and Python/cgo startup output
      • Both NodeJS and cgo based Sparta applications now log equivalent system information.
      • Example:
          "level": "info",
          "msg": "SystemInfo",
          "systemInfo": {
            "sysinfo": {
              "version": "0.9.1",
              "timestamp": "2017-09-16T17:07:34.491807588Z"
            "node": {
              "hostname": "ip-10-25-51-97",
              "machineid": "0046d1358d2346adbf8851e664b30d25",
              "hypervisor": "xenhvm",
              "timezone": "UTC"
            "os": {
              "name": "Amazon Linux AMI 2017.03",
              "vendor": "amzn",
              "version": "2017.03",
              "architecture": "amd64"
            "kernel": {
              "release": "4.9.43-17.38.amzn1.x86_64",
              "version": "#1 SMP Thu Aug 17 00:20:39 UTC 2017",
              "architecture": "x86_64"
            "product": {},
            "board": {},
            "chassis": {},
            "bios": {},
            "cpu": {
              "vendor": "GenuineIntel",
              "model": "Intel(R) Xeon(R) CPU E5-2680 v2 @ 2.80GHz",
              "cache": 25600,
              "threads": 2
            "memory": {}
          "time": "2017-09-16T17:07:34Z"
    • ๐Ÿ›  :bug: FIXED

      • There were more than a few
  • v0.13.2 Changes

    • ๐Ÿ’ฅ :warning: BREAKING
    • :checkered_flag: CHANGES
      • Changed how Lambda FunctionName values are defined so that function name uniqueness is preserved for free, imported free, and struct-defined functions
    • ๐Ÿ›  :bug: FIXED
  • v0.13.1 Changes

    • ๐Ÿ’ฅ :warning: BREAKING
    • :checkered_flag: CHANGES
      • Changed how Lambda FunctionName values are defined so that same-named functions provisioned across multiple stacks remain unique. This is done by prefixing the function name with the CloudFormation StackName.
      • Cleaned up S3 upload log statements to prefer relative paths iff applicable
    • ๐Ÿ›  :bug: FIXED
  • v0.13.0 Changes

    • ๐Ÿ’ฅ :warning: BREAKING
      • Removed sparta.NewNamedLambda. Stable, user-defined function names can be supplied via the SpartaOptions.Name field.
    • :checkered_flag: CHANGES

      • CloudWatch Dashboard Support!
      • You can provision a CloudWatch dashboard that provides a single overview and link portal for your Lambda-based service. Use the new sparta.DashboardDecorator function to automatically create a dashboard. This leverages the existing WorkflowHooks functionality.
      • Example:
      // Setup the DashboardDecorator lambda hook
      workflowHooks := &sparta.WorkflowHooks{
        ServiceDecorator: sparta.DashboardDecorator(lambdaFunctions, 60),
      • Where the 60 value is the CloudWatch time series period.
      • The CloudWatch Dashboard URL will be included in your stack's Outputs as in:
      INFO[0064] Stack output                                  Description="CloudWatch Dashboard URL" Key=CloudWatchDashboardURL Value=""
      • Example:
      • For more info, see the AWS Blog Post
      • The SpartaXRay sample application has additional code samples.
      • XRay support added
      • added LambdaFunctionOptions.TracingConfig field to LambdaFunctionOptions
      • added XRay IAM privileges to default IAM role settings:
        • xray:PutTraceSegments
        • xray:PutTelemetryRecords
      • See AWS blog for more information
      • added LambdaFunctionOptions.Tags to support tagging AWS Lambda functions
      • added SpartaGitHash output to both CLI and CloudWatch Dashboard output. This is in addition to the SpartaVersion value (which I occasionally have failed to update).
    • ๐Ÿ›  :bug: FIXED

      • Fixed latent issue where SpartaOptions.Name field wasn't consistently used for function names.
  • v0.12.1 Changes

    • ๐Ÿ’ฅ :warning: BREAKING
    • :checkered_flag: CHANGES
      • added Sparta/aws/cloudformation.UserScopedStackName() to generate username-suffixed CloudFormation StackNames
    • ๐Ÿ›  :bug: FIXED
  • v0.12.0 Changes

  • v0.11.2 Changes

    • ๐Ÿ’ฅ :warning: BREAKING
    • :checkered_flag: CHANGES

      • Added --inplace/-c command line option to support safe, concurrent updating of Lambda code packages
      • If enabled AND the stack update changeset reports only modifications to Lambda functions, then Sparta will use the AWS Lambda API to update the function code.
      • If enabled AND additional mutations are reported, you'll see an error as in:
      ERRO[0022] Unsupported in-place operations detected:
        Add for IAMRole9fd267df3a3d0a144ae11a64c7fb9b7ffff3fb6c (ResourceType: AWS::IAM::Role),
        Add for mainhelloWorld2Lambda32fcf388f6b20e86feb93e990fa8decc5b3f9095 (ResourceType: AWS::Lambda::Function)
      • Prefer NewRecorder to internal type for CGO marshalling
      • Added --format/-f command line flag [text, txt, json] to specify logfile output format. Default is text.
      • See logrus.Formatters
    • ๐Ÿ›  :bug: FIXED

  • v0.11.1 Changes

    • ๐Ÿ’ฅ :warning: BREAKING
    • :checkered_flag: CHANGES

      • Support Go 1.8 newly optional GOPATH environment variable
      • Python proxied cgo builds now preserve the transformed source in the ./sparta scratch space directory.
      • Sparta assigned AWS Lambda function names now strip the leading SCM prefix. Example:


    • Upgrade to Mermaid 7.0.0
    • Use stable PolicyName in IAM::Role definitions to minimize CloudFormation resource update churn

      • ๐Ÿ›  :bug: FIXED
    • Fixed latent bug where S3 bucket version check didn't respect --noop mode.

    • Fixed latent cgo bug where command line arguments weren't properly parsed