v0.22.0
This is a major release with multiple breaking changes in the core layers.
Please consult the breaking changes section below for details.
We are focusing these days on finalizing the common patterns and APIs of the CDK
framework and the AWS Construct Library, which is why you are seeing all these
breaking changes. Expect a few more releases with changes of that nature as we
stabilize these APIs, so you might want to hold off with upgrading. We will
communicate when this foundational work is complete.
Bug Fixes
- core: automatic cross-stack refs for CFN resources (#1510) (ca5ee35)
- ecs: correct typo and other minor mistakes in ecs readme (#1448) (9c91b20)
- elbv2: unable to specify load balancer name (#1486) (5b24583), closes #973 #1481
- lambda: use IRole instead of Role to allow imports (#1509) (b909dcd)
- toolkit: fix typo in --rename option description (#1438) (1dd56d4)
- toolkit: support multiple toolkit stacks in the same environment (#1427) (095da14), closes #1416
Features
- apigateway: add tracingEnabled property to APIGW Stage (#1482) (fefa764)
- assets: enable local tooling scenarios such as lambda debugging (#1433) (0d2b633), closes #1432
- aws-cdk: better stack dependency handling (#1511) (b4bbaf0), closes #1508 #1505
- aws-codepipeline: jenkins build and test actions (#1216) (471e8eb)
- aws-codepipeline: support notifications on the ManualApprovalAction (#1368) (068fa46), closes #1222
- aws-ecs: add support Amazon Linux 2 (#1484) (82ec0ff), closes #1483
- aws-kms: allow tagging kms keys (#1485) (f43b4d4)
- aws-lambda: add input and output artifacts to the CodePipeline action (#1390) (fbd7728), closes #1384
- cdk: transparently use constructs from another stack (d7371f0), closes #1324
- cli: allow specifying options using env vars (#1447) (7cd84a0)
- aws resource api linting (breaking changes) (#1434) (8c17ca7), closes #742 #1428
- core: cloudformation condition chaining (#1494) (2169015), closes #1457
- diff: better diff of arbitrary json objects (#1488) (607f997)
- route53: support cname records (#1487) (17eddd1), closes #1420
- step-functions: support parameters option (#1492) (935054a), closes #1480
- core: construct base class changes (breaking) (#1444) (fb22a32), closes #1431 #1441 #189 #1441 #1431
- core: idiomize cloudformation intrinsics functions (#1428) (04217a5), closes #202
- cloudformation: no more generated attribute types in CFN layer (L1) (#1489) (4d6d5ca), closes #1455 #1406
- cloudformation: stop generating legacy cloudformation resources (#1493) (81b4174)
BREAKING CHANGES
- Construct API has been moved under
construct.node
in order to reduce pollution of APIs of derived classes. - Construct
parent
renamed toscope
and now available under theconstruct.node
API - Cross-stack references: if you are using
export()
andimport()
to share constructs between stacks, you can stop doing that, instead ofFooImportProps
accept anIFoo
directly on the consuming stack, and use that object as usual. ArnUtils.fromComponents()
andArnUtils.parse()
have been moved ontoStack
.- All CloudFormation pseudo-parameter (such as
AWS::AccountId
etc) are now also accessible viaStack
, asstack.accountId
etc. - All CloudFormation intrinsic functions are now represented as static methods under the
Fn
class (e.g.Fn.join(...)
instead ofnew FnJoin(...).toString()
) resolve()
has been moved tothis.node.resolve()
.CloudFormationJSON.stringify()
has been moved tothis.node.stringifyJson()
.validate()
now should beprotected
.- The deprecated
cloudformation.XxxResource
classes have been removed. Use theCfnXxx
classes instead. - Any
CfnXxx
resource attributes that represented a list of strings are now typed asstring[]
s (via #1144). Attributes that represent strings, are still typed asstring
(#712) and all other attribute types are represented ascdk.Token
. - route53: The
route53.TXTRecord
class was renamed toroute53.TxtRecord
. - route53: record classes now require a
zone
when created (not assuming zone is the parent construct). - lambda: the static "metric" methods moved from
lambda.FunctionRef
tolambda.Function
. - Many AWS resource classes have been changed to conform to API guidelines:
XxxRef
abstract classes are nowIXxx
interfacesXxxRefProps
are nowXxxImportProps
XxxRef.import(...)
are nowXxx.import(...)
acceptXxxImportProps
and returnIXxx
export(): XxxImportProps
is now defined inIXxx
and implemented by imported resources