UNPKG

@mapbox/cloudfriend

Version:

Helper functions for assembling CloudFormation templates in JavaScript

305 lines (166 loc) 8.76 kB
# Changelog ## 9.0.0 - Removes: - aws-sdk as a runtime dependency. - All node support prior to version 20. - Adds: - `@aws-sdk/client-cloudformation` as a runtime dependency. - Updates: - bin/validate-template to use `@aws-sdk/client-cloudformation`. - Lambda shortcut lambda runtime default to use `node22.x` ## 8.4.0 - Support `ImageConfig` property for Lambda ## 8.3.0 - Support a default value for cf.findInMap (Fn::FindInMap). ## 8.2.0 - Add `LogRetentionInDays` option to Lambda shortcuts ## 8.1.0 - Allow `FilterCriteria` property to be defined for Stream Lambda shortcuts ## 8.0.0 - Updates `cf.shortcuts.ScheduledLambda` to use EventBridge Scheduler instead of EventBridge Rules to schedule lambda invocations. When using this version your template will have the following changes per scheduled lambda instance, ``` Add <LogicalNamePrefix>SchedulerRole AWS::IAM::Role Add <LogicalNamePrefix>Scheduler AWS::Scheduler::Schedule Remove <LogicalNamePrefix>Permission AWS::Lambda::Permission Remove <LogicalNamePrefix>Schedule AWS::Events::Rule ``` Note the service role (`AWS::IAM::Role`) will automatically be created for the `AWS::Scheduler::Schedule` resource if you do not specify property `ScheduleRoleArn` in the shortcut. When you make this update, you will no longer see a trigger on your scheduled lambda. The schedule can be viewed in EventBridge schedules. - [Read more in API reference doc](./lib/shortcuts/api.md#ScheduledLambda) - [Read more about the EventBridge Scheduler](https://docs.aws.amazon.com/scheduler/latest/UserGuide/managing-schedule-group.html) ## 7.1.0 - Add support for `Fn::ForEach`. With `Fn::ForEach`, you can replicate parts of your templates with minimal lines of code, as per the [official AWS announcement](https://aws.amazon.com/about-aws/whats-new/2023/07/accelerate-cloudformation-authoring-experience-looping-function/) and [the documentation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/intrinsic-function-reference-foreach.html). ## v7.0.1 - Fixes `hookshot.Passthrough` and `hookshot.Github` shortcuts where inline code lambdas were using AWS SDK v2 while the lambda default runtime is `nodejs18.x`, by switching to AWS SDK v3. - Updates `hookshot.Passthrough` and `hookshot.Github` shortcuts to only use nodejs versions 18 or higher for there inline code lambdas. ## v7.0.0 - Updates default node runtime for lambda shortcuts to node18.x. - Suppress AWS SDK V2 maintinence message for `validate-template`. - Updates `aws-sdk` to version 2.1425.0. ## v6.0.0 - Updates default node runtime for lambda shortcuts to node16.x. - Updates default authorization type for hookshot shortcuts to "NONE" from "None". ## v5.1.1 - Dependency updates to avoid security vulnerabilities (minimist). ## v5.1.0 - Lambda shortcuts now support custom Docker images. ## v5.0.2 - Fixes handling custom access log formats in hookshot shortcuts. ## v5.0.1 - Improves data type mappings between Glue and Presto when using the `GluePrestoView` shortcut. ## v5.0.0 - The Lambda shortcuts now use `nodejs12.x` as the default runtime. - There is no longer any constraint on the useable Lambda runtimes. ## v4.6.0 - Adds top-level `Rules` section support to `cf.merge`. Each key in `Rules` must have a unique name. - Adds rule-specific intrinsic functions: `contains`, `eachMemberEquals`, `eachMemberIn`, `refAll`, `valueOf`, `valueOfAll` ## v4.5.1 - Fixes a bug present in v4.4.0 and v4.5.0 where Lambda shortcuts' Conditions were not passed to the generated IAM Roles. ## v4.5.0 - Adds top-level `Transform` section support to `cf.merge`. `Transform` macros from all template arguments are merged into a single array, in order of their appearance in the template arguments, and an error is thrown if any macro is repeated. ## v4.4.0 - Sets the policy `Version` in all generated Roles to **2012-10-17** - Adds a `RoleArn` setting to Lambda shortcuts. If set, the created Lambda function will use this Role and will not create a new one. ## v4.3.0 - Adds Tags option to Role shortcuts ## v4.2.3 - Fix typo in Glue database shortcut ## v4.2.2 - Fix bugs in Queue shortcut with the setting `FifoQueue: true`. This option did not work to create FIFO queues before: the resources it created were undeployable. Now it works. ## v4.2.1 - Fix bug in QueueLambda where ReservedConcurrentExecution inncorrectly couldn't be set to zero ## v4.2.0 - Seperate Glue View into Glue Presto View and Glue Spark View ## v4.1.3 - Update minimist to resolve security vulnerabilities ## v4.1.2 - More Bugfixes for Glue shortcuts. Specifically, pass in the column descriptions! ## v4.1.1 - Bugfixes for Glue shortcuts ## v4.1.0 - Add shortcuts for Glue resources ## v4.0.0 - Upgrade cloudfriend and lambda shortcut to Node10 with support for Node12 ## v3.8.1 - Fix bug in queue shortcut ## v3.8.0 - Adds `ExistingTopicArn` option to queue shortcut ## v.3.7.0 - Adds shortcut for log subscription lambda ## v3.6.0 - Adds support for the `MaximumBatchingWindowInSeconds` property of an event source mapping within the `StreamLambda` shortcut ## v3.5.0 - Adds shortcut for Kinesis Firehouse (with S3 destination) ## v3.4.0 - Adds requirement for lambda shortcut alarm evaluation windows to >= the lambda timeout ## v3.3.0 - Adds shortcut for an event-driven Lambda function. ## v3.2.0 - Adds shortcuts for a generic IAM role and for a cross-account IAM role. ## v3.1.1 - Revert shortcut Lambdas to `node8.10` runtime, as `ZipFile`-style function definitions are not yet supported for `node10.x` by Cloudformation. ## v3.1.0 - Shortcut lambdas are run with runtime Node10.x by default ## v3.0.1 - Dependency updates to avoid security vulnerabilities and make installable in node.js v12. ## v3.0.0 - Makes all hookshot API Gateway **regional** instead of **edge-optimized** endpoints. ## v2.8.2 - Adds `firehose` as another service which cannot use `AWS::URLSuffix` ## v2.8.1 - Implement a list of AWS service namespaces where use of `AWS::URLSuffix` results in an invalid service URL in China regions. ## v2.8.0 - Allows Hookshot callers to bring their own webhook secret. This is used for signature-verification in the `.Github()` case. ## v2.7.0 - Adds support for Layers to Lambda shortcuts ## v2.6.0 - Modifies CloudWatch alarm names to include the AWS region. ## v2.5.0 - Hookshot caller can now enable metrics, detailed execution logging, and setup custom-formatted access logging ## v2.4.0 - Hookshot caller can now set execution LoggingLevel to INFO or ERROR ## v2.3.0 - Shortcut lambdas are run with runtime Node8.10 by default ## v2.2.0 - Pass options through to command line tools #22 ## v2.1.0 - adds new shortcuts: `hookshot.Passthrough` and `hookshot.Github`, for simple webhook-response systems - adds support for `DependsOn` properties to several shortcuts - fixes a bug in `shortcuts.ServiceRole` if no permissions statements are provided ## v2.0.2 - fixes a bug in the lambda service principal definition in china regions ## v2.0.1 - various shortcut bugfixes. See https://github.com/mapbox/cloudfriend/pull/34 ## v2.0.0 - Cloudfriend is no longer friends with node.js versions less than v8. Now is the right time to update your local runtime. - Adds `cf.shortcuts`, which are a set of classes that can be used to generate boilerplate CloudFormation template code for certain scenarios. ## v1.10.0 - Allow specifiying region in `validate-template` command ## v1.9.1 - Rename `AWS::DomainSuffix` to `AWS::URLSuffix` ## v1.9.0 - Adds `AWS::Partition` and `AWS::DomainSuffix` pseudo-parameters - Adds `cloudfriend.arn()`, a shortcut for constructing ARNs ## v1.8.2 - more permissive engines.node ## v1.8.1 - `.split()` now allows object arguments. ## v1.8.0 - `.split()` added for `Fn::Split` intrinsic function. ## v1.7.0 - Adds `cloudfriend.permissions`, which exports a CloudFormation template which creates an AWS user and access key with permission to run `cloudfriend.validate()`. ## v1.6.0 - Adds support of Fn::ImportValue ## v1.5.0 - `.merge()` now allows name reuse across template properties, e.g. can have a Resource and an Output with the same name. - `.merge()` now allows name overlaps if the provided objects are identical. ## v1.4.0 - `validate-template` now exits 1 if the template is invalid. ## v1.3.0 - Adds support for Fn::Sub ## v1.2.0 - Fixes `cloudfriend.build()` for JSON template files that do not use the `.json` extension. - Adds an optional second arg to `cloudfriend.build(template, opts)`. If provided, this object is handed to any `.js`-defined template file that exports a function. ## v1.1.0 - Initial release