All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- Added support lambda layers with runtime DotNet
- Tagging added to
oas_v3 openapi
API Gateway. - SNS topic deletion fixed.
- Added an example of a lambda function with runtime
dotnet
- Fixed silent overwriting existing lambda with runtime Java during the command
syndicate generate lambda
- Changed deployment flow to work despite the latest deployment failed
- Changed deployment flow with the flag
--continue_deploy
to work despite the latest deployment being absent or succeeded - Implemented rolling back on error mechanism(flag
--rollback_on_error
) for deployment flow with the flag--continue_deploy
- Added support of lambda functions with runtime DotNet
- Added possibility to deploy/update resource-specific tags
- Added confirmation request mechanism for the
update
command in case the latest deployment failed - Added the flag
--force
for theupdate
command to run an update without confirmation request in case the latest deployment failed - Added proper messages for commands
update
andclean
if deployed resources are absent(output file not found) - Added logging of resource names that cause errors to improve error diagnostics
- Added enhanced logging of the
build
command execution - Added validation for existence of bundle and deploy names
- Added validation for incompatible parameters(
--events
,--resources
) of the commandsyndicate status
- Added the possibility to add resource-specific tags via the resource meta generation(flag
--tags
) - Added tags support to the Syndicate Java plugin. The
@Tags
and the@Tag
annotations added to the plugin. The Java plugin version updated to 1.14.0 - Changed the Java lambda template to use the Syndicate Java plugin version 1.14.0 for the new lambda generation.
- Event status added to the command
syndicate status
output - Reworked lambda triggers update to compare local event sources meta with the previous remote one
- Reworked lambda triggers deletion to not list every resource of the trigger type to remove it from lambda (EPMCEOOS-6112)
- The key
operation_status
inlatest_deploy
section of the syndicate state file(.syndicate) renamed tois_succeeded
- Fixed lock resolving issue
- Fixed an issue related to bucket name resolving in the s3_bucket policy
- Added logging of resource names that cause errors to improve error diagnostics
- Fix the resource update issue that occurs when a deploy_name is specified by user (not default one) but deployment output for the latest deployment is empty
- Fixed an issue where updating only certain resources caused the deployment output to be overwritten with only these resources, instead of updating the existing meta
- Fixed deployment failure if resource name is the same as resource type
- Fixed an issue related to resource name resolving if ARN is a list item
- Fixed an issue related to name resolving if one resource name contains another resource name
- Fixed an issue when a lambda deployment fails when a trigger defined in meta does not exist
- Fixed an issue related to updating lambda triggers
- Fixed lambda event source mapping inactivity after deployment
- Improved logging for the deletion of a resource that does not exist in the account
- Improved logging in case of the absence of resources to clean
- Fixed Lambda Layer packaging for the NodeJS runtime
- Fixed an issue where newly added resources (after deploy) were causing the update operation to fail
- Fixed a synchronization issue that prevented the batch job queue from being deleted before its state was fully updated
- Fixed an issue related to removing CloudWatch alarms that were used for Dynamodb autoscaling
- Fixed an issue with the absence of lambda's information in the output file in case deployment failed on the trigger configuration step
- Fixed an issue related to losing state after partial clean
- Fixed an issue related to the latest output resolving
- Fixed an issue related to the API Gateway throttling and cache configuration for ANY method
- Fixed an issue with
--force_upload
being required while syndicate assemble
- Speed up deletion of s3 bucket with lots of objects
- Added possibility to configure
FunctionResponseTypes
for lambda functions - Updated maven plugin version to 1.12.0 with support of
FunctionResponseTypes
- Added possibility to set up Cognito user pool ID in lambda function environment variable
- Added possibility to set up Cognito user pool client ID in lambda function environment variable
- Fix lambda triggers deletion when removed from meta
- Fix resources dependencies resolving
- Fix losing successfully deployed resources from the output file during deployment with the option
--continue_deploy
- Fix API Gateway duplication in case of existing API Gateway with the same name
- Fix detection of usage
--rollback_on_error
option with an incompatible option--continue_deploy
- Changed datetime format for lock attributes in the
.syndicate
file to UTC format - The Syndicate Java plugin version updated to 1.13.0 with changes:
- The ResourceType enum for the @DependsOn annotation extended with new type ResourceType.COGNITO_USER_POOL
- The @EnvironmentVariable annotation for the Syndicate Java plugin improved to support the value transformer
- A new value transformer type created ValueTransformer.USER_POOL_NAME_TO_USER_POOL_ID
- A new value transformer type created ValueTransformer.USER_POOL_NAME_TO_CLIENT_ID
- The generate Java lambda template changed to use the Syndicate Java plugin version 1.13.0
- Added ability for
clean
command to automatically resolve if--rollback
is needed. - Fixed an issue related to
log group already exists
error while deploying or updatinglambda
. - Updated
syndicate deploy --continue_deploy
command, now it can save output and actually continue deployment resources. - Implemented
rollback_on_error
flag forsyndicate deploy
command. Is flag isTrue
, all resources that have been deployed during deployment process, would be cleaned. - Fixed an issue related to deploying multiple resources with same type, now it catches an
Exception
in case of a deployment error of one of the resources and returns it along with the outputs. - Fixed
deploy
command responses. - Added support of Python 3.12
- Fixed an issue related to ARNs resolving in case of empty resource name
- Fixed an issue related to improper filtering of resources in case of different types of filter usage
- Fixed an error related to SQS FIFO Queue availability regions
- Fixed an issue related to deploying SQS Queue with configured redrive_policy
- Fixed an issue when only the last s3 trigger was configured for the lambda
- Added
force_upload
action to all assemble commands
- Added support of custom authorizer names in Open API specification security schemes
- Fixed quietness of errors while deploying/updating API Gateway via OpenAPI specification
- Fixed API GW deletion when openapi specification is invalid
- Fixed issue with the command
generate meta api_gateway_resource
- Fixed lambda function deployment fails in case of matching any resource name with prefix or/and suffix
- Syndicate Java plugin patched to version 1.11.1 to exclude extra dependencies
- Fixed an error related to export OpenAPI specification in extended prefix mode
- Added support of EC2 Launch Templates(
ec2_launch_template
) - Change log level (for non-last exceptions) in retry decorator from error to warning
- add
.syndicate-config-*/
to generated project gitignore - Fixed an error in case of an attempt to delete a nonexistent API Gateway
- Add error log in case of invalid resource type
- Fixed an error in case of an attempt to delete a nonexistent IAM Policy
- Fixed an error in case of an attempt to delete a nonexistent SNS Topic
- Fixed an error related to
UpdateEventSourceMapping operation
during SQS trigger deployment
- Added support of Python 3.12 lambda runtime
- Root account removed from trusted entities of autogenerated lambda’s role
- Improve bundle name validation: exclude folder path from length validation
-
- Added an ability to build lambdas and lambda layers with local requirements (for
nodejs
runtime)
- Added an ability to build lambdas and lambda layers with local requirements (for
- Implemented subnet group deletion with deletion of the related DAX if the syndicate deployed it
- Fixed deploy target bucket key compound appending to artifact src in swagger ui resource
- Clarified the error message when copying NodeJS dependencies folder
- Changed the error log message to the warning when updating log group retention period
- Made a bunch of changes to the CloudWatch Alarm resource:
- added the ability to add ALARM actions for Lambdas and System Manager (incident manager);
- added new parameters to the resource description in the deployment_resources:
description
,datapoints
,dimensions
andevaluate_low_sample_count_percentile
; - added new parameters to the
syndicate generate meta cloudwatch_alarm
command:description
,datapoints
andevaluate_low_sample_count_percentile
; - added more values to the
comparison_operator
parameter:LessThanLowerOrGreaterThanUpperThreshold
,LessThanLowerThreshold
,GreaterThanUpperThreshold
- Fixed bug when lambda invocation permissions in lambda`s alias were not removed after the web_socket_api_gateway was destroyed
- Fixed displaying help messages with partially specified credentials
- Added more error logs in retry function which assumes aws credentials
- Added verbose mode (flag
--verbose|-v
) - improved project lock logic to make it configurable and time-limited
- Fix issue with syndicate not uploading deploy output on fail
- Added clarification error message in case of deployment after failed deploy
- Fixed generation of tests when generating meta for a new lambda function
- Fixed a deployment error when
sqs|stream
lambda triggerbatch_size
value is greater than 10 - Fixed an error in case of an attempt to tag a resource of type
swagger_ui
- Removed redundant dependencies from the Java plugin
- Added new resource type
swagger_ui
- Added support of Eventbridge rule
- Added generation of lambda layer meta, the command
syndicate generate lambda_layer
- Added an ability to build and deploy lambda layers with
nodejs
runtime - Added lambda function processor architecture type management
- Added lambda layers compatible processor architecture types management
- The @LambdaHandler annotation for Java plugin improved to support the lambda 'architecture' management
- The @LambdaLayer annotation for Java plugin improved to support the lambda 'architectures' management
- Added meta generation for API gateway authorizer
- Added
api_source_arn
when creating permission for lambda authorizer. - Added API Gateway
Throttling
settings management - Added the feature "export api gateway OpenAPI spec"
- Added support for OpenAPI v3 deploy, update and clean-up in API Gateway
- Added lambda functions resource-based policy adjustment when integration with API Gateway defined with OpenAPI v3 spec
- Added Cognito User Pools ARNs resolving for OpenAPI specification via the key
x-syndicate-cognito-userpool-names
of thex-amazon-apigateway-authorizer
extension - Added S3 bucket deployment with configuration for static website hosting
- Added CloudWatch logs expiration management
- Added validation for the configuration parameter
iam_suffix
- Added warning to logs in case of unknown parameters in the configuration file
- Added the parameter
--preserve_state
to thesyndicate clean
command to keep the deployment output file - Added validation of composite deploy_target_bucket (bucket_name+prefix) to the command
syndicate generate config
- Added ability to generate syndicate configs with temporary set of credentials
- Improved the Lambda SQS Trigger Creation process to check for existing event source mapping, and update or create if needed.
- Change in
syndicate generate config
command default value forlambdas_alias_name
fromprod
todev
- Fixed inconsistency of the project state in case of several deployments
- Fixed skipping deploy|update|clean resources with filtering by name when prefix and/or suffix specified in syndicate configuration
- Fixed a bug when an empty requirements.txt file with a newline would cause the project to fail to build
- Fixed API Gateway deployment with the default value(300) of the
Cache time to live
parameter if the specified value is0
- Fixed lambda authorization permissions
- Fixed AWS Batch Compute environment deployment issue in case of specifying the parameter
--allocation_strategy
- Fixed DAX cluster deployment error when DAX Role is deploying on the fly
- Fixed Dax cluster meta generation error in case of specifying subnet group name and subnets IDs
- Fixed the help message for the parameter
--security_group_names
of the commandsyndicate generate meta ec2_instance
- Fixed a mechanism of linking API gateway resource methods with an authorizer
- Fixed an issue related to clean resources after a partial clean
- Fixed displaying help messages without configured SDCT_CONF environment variable
- Upgraded default Java Lambada runtime from Java 8 to Java 11
- Added support of Lambda runtime Java 17 and Java 21
- Upgraded default NodeJS lambda runtime version from 14.x to 20.x
- Updated available NodeJS lambda runtime versions from 10.x/12.x/14.x to 16.x/18.x/20.x
- Actualized Java project examples
- Actualized Python project examples
- Removed obsolete documentation (/docs)
- Add a feature in
syndicate update
command to updatelogs_expiration
parameter incloudWatch
logs group. For settinglogs_expiration
, refer tosyndicate_aliases
.
- Change from
error
towarning
if integer not provided in allowed values forlogs_expiration
values and set default to30
.
- Add parameter
logs_expiration
tosyndicate_aliases.yml
andlambda_config.json
. The default value is set to "30 days". To ensure the logs expire after 10 years, set the value to:logs_expiration: 0
.
- Fix dynamodb table capacity mode recognition during update
- Add last exception raise in
connection/helper.py:retry()
- Changed required type for attribute
resources_requirements
from dict to list inbatch_jobdef_validator.py
- Fixed an issue related to lambda generation with a name that contains underscores
- conf files handling library configobj replaced with built-in configparser package
- Fixed an issue related to s3 bucket lifecycle policy deployment
- Updating gsi capacity units when changing table capacity mode from on-demand to provisioned
- Capacity units when updating global secondary indexes when table capacity mode is on-demand
- Updating
max_retry
attribute from $LATEST lambda version to alias only
- Default empty value for dynamodb's global secondary indexes when not declared in deployment_resources.json
dynamodb_table
resource priority inUPDATE_RESOURCE_TYPE_PRIORITY
constant
- Ability to update
dynamodb_table
resource, specifically: table capacity, gsi capacity, table billing mode, table ttl, add or remove gsi
- A new Maven plugin goal 'assemble-lambda-layer-files' has been added to the 'deployment-configuration-processor' plugin
- A new Java lambda example with assembling layer files and url config has been added
- An example of adding custom SDK to layer and url config for lambda has been added to Java examples folder
- The deployment-configuration-processor version bumped to 1.10.0
- Fixed API Gateway service integration credentials building
- Fixed lambda event invoke config creating and updating
- Fixed lambda deployment in extended prefix mode
- Fixed SNS subscription deletion with SNS topic deletion
- Fixed processing of retries for
InvalidParameterValueException
- Added waiting for IAM role creation
- Implemented extended prefix mode
- Added
max_retries
attribute setting for creating and updating lambda configuration
- LambdaUrlConfig java annotation has been added to the aws-syndicate mvn plugin.
- deployment-configuration-processor version bumped to 1.9.0.
- Add EventBridge Scheduler support
- replace ignored pip install parameter
--python
withpython-version
- Set default lambda Python runtime to 3.10
- Updated libraries to support Python 3.10 as a development tool:
boto3
from 1.26.18 to 1.26.80botocore
from 1.29.18 to 1.29.80colorama
from 0.4.1 to 0.4.5configobj
from 5.0.6 to 5.0.8pyyaml
from 5.4 to 6.0.1requests
from 2.27.1 to 2.31.0tabulate
from 0.8.9 to 0.9.0tqdm
from 4.19.5 to 4.65.2
- Fixed ignored request parameters when creating api gateway's resource method using lambda integration
- Add support Python 3.10 and Python 3.11
- Added ability to use SSO credentials
- Added parameter
aws_session_token
tosdct.conf
for role assuming
- Added
web_socker_api_gateway
resource type. Allows to deploy web-socket API with lambda integrations
- Fixed resolving of available instance types for Windows
- Resolve available instance types from
botocore
data
- Added new supported EC2 instance types:
c7g
,t4g
,t3
- Added
transform
command that creates a CloudFormation or Terraform template based on thebuild_meta
of your project
- improve python artifacts building process. By default,
manylinux2014_x86_64
is used for M1 and Windows. In case the platform is set and pip installation fails, the Syndicate will try to install a package the default way.
snap_start
support of Java-based lambda configurations ofPublishedVersions
orNone
values.resourceGroup
annotation parameter to Java-based lambda.- Specify target AWS Lambda platform, python version and implementation to install dependencies
init
command was replaced withgenerate config
- Interface of command was improved,
access_key
andsecret_key
params made optional - Removed
account_id
param and provided ability to resolve it by STS or instance profile python_build_mapping
,java_build_mapping
,nodejs_build_mapping
was removed as they will be resolved using the.syndicate
filegenerate lambda
command was improved,common
andtests
module for python runtime is generated with the first lambda. They contain basic common class all lambdas and simple initial test case.- Provided ability to add information about created lambda to
.syndicate
file - Added
test
command that allows to run tests inside your python project - Added
profiler
command that allows to display application Lambda metrics - Fixed an issue in
clean
command, associated with API Gateway skipping removing Lambda trigger permissions - Fixed an issued in
clean
command associated with removing EC2 instances - Fixed an issue in
clean
command, associated with removing resources if they specified as excluded - Add ANY, PATCH to supported methods in API Gateway
- Changed logs format. All the logs are saved up to the path from SDCT_CONF variable if it exists. Otherwise the logs are saved to user's home directory.
- Added validation of
bundle_bucket_name
when generating config - Added prefix and suffix validation when generating config. Their length must be less or equal to 5
- Fixed bugs with no output from
update
command - Unified datetime format to ISO8601
- Changed
.syndicate
events saving algorithm: 30-days old events are deleted after each updating of the file. But 20 events (or less if there aren't this many) will be kept anyway, so if some amount of events exist, it isn't possible to get them all deleted. - Added
latest_event
field to.syndicate
file to keep the latest action's info such as: operation type,bundle_name
,deploy_name
, performing time and other - Fixed generating building and deploying java and nodejs lambdas. Updated
pom.xml
template according to the new version ofdeployment-configuration-annotation
plugin - Fixed an issue when build meta is validated before resolving aliases in it
- Added
minimum_compression_size
param to API gateway deployment_resource declaration. It enables payload compression for an API with given size; - Added lambda URL support;
- Added lambda ephemeral storage support;
- Added an ability to create DynamoDB in on-demand mode if
read_capacity
andwrite_capacity
are not specified; - Describe an existing Api Gateway instead of creating a new one;
- Added an ability to create models in API Gateway;
- Added AWS Kinesis Firehose support;
- Add lambda event-source-mapping filters support;
- Added an ability to build lambda layers (similarly to lambdas)
- Add AWS Batch support
- Add external resources support
- Add parameter binary_media_type for API Gateway resource type
- Updated Python project examples
- Added integration request parameters for API Gateway
- Added request validator for API Gateway
- Fixed a lost first zero issue due to incorrect work
syndicate init
command for AWS accounts, which start at zero. - Added the ability to add
logs_expiration
parameter in lambda_config.json. - Update Java version in Travis builds
- Fixed the error related with absent parameter
session_duration
insdct.conf
- Added parameter
session_duration
tosdct.conf
for setting session duration while role assuming
- Fixed DynamoDB LSI check while building bundle
- Fixed deployment of CloudWatch Rules
- Add required mark (asterisk) for required parameters in 'Help' section for
syndicate generate lambda
andsyndicate generate project
commands - Add validation for the empty
lambda_name
parameter insyndicate generate lambda
command
- Removed
traceback
from response after attempting to generate lambda withoutproject_path
parameter bysyndicate generate lambda
command - Remove
traceback
from response after attempting to generate lambda for non exist project bysyndicate generate lambda
command
- Syndicate now supports configurations in YAML: syndicate.yml and syndicate_aliases.yml; The old ones (sdct.conf, sdct_alises.conf) are still supported.
- Syndicate configuration generation. Command
syndicate init --help
- Python/Java/NodeJS project generation. Command
syndicate generate project --help
- Python/Java/NodeJS lambda generation. Command
syndicate generate lambda --help
- All commands from group
generate
and the commandsyndicate init
are able to be executed without providedSDCT_CONF
variable
- All bundles now are stored to
$SDCT_CONF/bundles
folder.
- Version option. 'syndicate --version' is now available.
- Docs for commands.
- fixed an issue of 'The role defined for the function cannot be assumed by Lambda' while creating lambda right after the role for the lambda was created. #63
- Lambda provisioned concurrency configuration.
- LambdaProvisionedConcurrency java annotation added aws-syndicate mvn plugin.
- deployment-configuration-processor version bump to 1.5.8.
- Lambda concurrency configuration field renamed in lambda_config.json from concurrency to max_concurrency.
- Generation meta for Lambda Layers.
- Lambda layer attribute renamed: fileName -> deployment_package.
- Fixed filters for resources in the 'clean' command.
- The 'publish_lambda_version' command. 'update' should be used instead.
- Command 'update'. Should be used for infrastructure update instead of 'publish_lambda_version'.
- The 'replace_output' flag to 'deploy' and 'update' commands.
- The 'publish_lambda_version' command is not recommended to use.
- Add check for existing deploy name for commands 'deploy', 'update'.
- Improved log messages.
- No removals
- NodeJS runtime supported.
- Implemented Lambda Layers deployment from meta.
- The 'force' flag to 'upload_bundle', 'copy_bundle', 'build_bundle' commands.
- Lambda layers integration while lambda creation.
- Command renamed: mvn_compile_java -> assemble_java_mvn.
- No removals
Initial version. See README.