All Versions
73
Latest Version
Avg Release Cycle
50 days
Latest Release
-
Changelog History
Page 4
Changelog History
Page 4
-
v0.20.4 Changes
- ๐ฅ :warning: BREAKING
- Changed
step.NewStateMachine
signature to include StateMachineName as first argument per Nov 15th, 2017 release
- Changed
:checkered_flag: CHANGES
- Add
profile
command - Profile snapshots are enabled via:
sparta.ScheduleProfileLoop(nil, 5*time.Second, 30*time.Second, "heap")
- Profile snapshots are published to S3 and are locally aggregated across all lambda instance publishers. To view the ui, run the
profile
Sparta command.- For more information, please see The new pprof user interface - โญ๏ธ, Profiling Go programs with pprof, or the Go blog
- See the SpartaPProf sample for a service that installs profiling hooks.
- Ensure you have the latest
pprof
UI via go get -u -v github.com/google/pprof - The standard profile names are available, as well as a cpu type implied by a non-zero
time.Duration
supplied as the third parameter toScheduleProfileLoop
. - Eliminate unnecessary logging in AWS lambda environment
- Log NodeJS process.uptime()
- Add
๐ :bug: FIXED
- Added more constructive message when working directory for
go build
doesn't containmain
package.
- Added more constructive message when working directory for
- ๐ฅ :warning: BREAKING
-
v0.20.3 Changes
- ๐ฅ :warning: BREAKING
- :checkered_flag: CHANGES
- ๐ :bug: FIXED
- Fixed
explore
interactive debugging instructions
- Fixed
-
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 aStateMachineDecorator
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] โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ 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
- Handle case where multipart forms with empty values weren't handled https://github.com/mweagle/Sparta/issues/74
-
v0.20.1 Changes
- ๐ฅ :warning: BREAKING
- :checkered_flag: CHANGES
- Add
sparta.LambdaName
to return the reflection-discovered name of anhttp.HandleFunc
instance.
- Add
- ๐ :bug: FIXED
- Fixed issue with
--describe
not rendering CloudFormation template properly - Better handle failures when posting body - thanks @nylar
- Fixed issue with
-
v0.20.0 Changes
๐ :star: Deprecation Notice
๐ The
sparta.LambdaFunc
signature is officially deprecated in favor ofhttp.HandlerFunc
and will be removed in an upcoming release. See below for more information- ๐ฅ :warning: BREAKING
- Changed
NewLambdaHTTPHandler
toNewServeMuxLambda
- Remove obsolete
InvokeID
from LambdaContext - Changed
codePipelineTrigger
CLI arg name tocodePipelinePackage
- Changed
: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 atlogger.Debug
level and higher including all AWS API calls made both atprovision
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 andcgo
deployments - Introduced
sparta.HandleAWSLambda
sparta.HandleAWSLambda
accepts standardhttp.RequestFunc
signatures as in:
func helloWorld(w http.ResponseWriter, r *http.Request) { ... } lambdaFn := sparta.HandleAWSLambda("Hello HTTP World", http.HandlerFunc(helloWorld), sparta.IAMRoleDefinition{})
- 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" }
- Eliminated NodeJS cold start
๐ :bug: FIXED
- There were more than a few
- ๐ฅ :warning: BREAKING
-
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.
- Removed
: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="https://us-west-2.console.aws.amazon.com/cloudwatch/home?region=us-west-2#dashboards:name=SpartaXRay-mweagle"
- 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.
- Fixed latent issue where
- ๐ฅ :warning: BREAKING
-
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
- ๐ฅ :warning: BREAKING
- Replaced all https://github.com/crewjam/go-cloudformation references with https://github.com/mweagle/go-cloudformation references
- This is mostly internal facing, but impacts advanced usage via ServiceDecoratorHook users. Clients may need to update the types used to create alternative topologies.
- :checkered_flag: CHANGES
- ๐ :bug: FIXED
- Fixed latent issue where CGO-enabled services that reference
cgo.NewSession()
would not build properly - Fixed latent issue where S3 backed sites (eg: SpartaHugo) would not refresh on update.
- 55
- Fixed latent issue where CGO-enabled services that reference
- ๐ฅ :warning: BREAKING